Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
Fork of Project_PokPakGame by
Diff: main.cpp
- Revision:
- 5:7041c827932b
- Parent:
- 4:3605c624b64f
- Child:
- 6:ba32ff34ce87
--- a/main.cpp Sat Dec 05 17:19:21 2015 +0000 +++ b/main.cpp Sun Dec 06 17:06:18 2015 +0000 @@ -1,5 +1,4 @@ #include "mbed.h" -#include "time.h" SPI DataPack(SPI_MOSI, SPI_MISO, SPI_SCK); DigitalOut Latch(D10); @@ -10,19 +9,23 @@ DigitalIn UpperButton(D6); float VR_value0,VR_value1; -int Base[6][3][3]= { - //[6]=[0]_base1,[1]_base2,[2]_base3,[3]_base4,[4]_base5,[5]_base6 +int Base[10][3][3]= { + //[6]=[0]_base1,[1]_base2,[2]_base3,[3]_base4,[4]_base5,[5]_base6 ,[6]_baseSS1 ,[7]_baseSS2,[8]_baseSS3 ,[9]_baseSS4 //[3]=[0]_red,[1]_yello,[2]_green {{0x1F,0xFF,0xFF},{0x1F,0x1F,0xFF},{0xFF,0x1F,0xFF}} , {{0x8F,0xFF,0xFF},{0x8F,0x8F,0xFF},{0xFF,0x8F,0xFF}} , {{0xC7,0xFF,0xFF},{0xC7,0xC7,0xFF},{0xFF,0xC7,0xFF}} , {{0xE3,0xFF,0xFF},{0xE3,0xE3,0xFF},{0xFF,0xE3,0xFF}} , {{0xF1,0xFF,0xFF},{0xF1,0xF1,0xFF},{0xFF,0xF1,0xFF}} , - {{0xF8,0xFF,0xFF},{0xF8,0xF8,0xFF},{0xFF,0xF8,0xFF}} + {{0xF8,0xFF,0xFF},{0xF8,0xF8,0xFF},{0xFF,0xF8,0xFF}} , + {{0x07,0xFF,0xFF},{0x07,0x07,0xFF},{0xFF,0x07,0xFF}} , + {{0x83,0xFF,0xFF},{0x83,0x83,0xFF},{0xFF,0x83,0xFF}} , + {{0xC1,0xFF,0xFF},{0xC1,0xC1,0xFF},{0xFF,0xC1,0xFF}} , + {{0xE0,0xFF,0xFF},{0xE0,0xE0,0xFF},{0xFF,0xE0,0xFF}} }; int Row[8]= {1,2,4,8,16,32,64,128}; int Col[8]= {127,191,223,239,247,251,253,254}; -int x,y,up,down,t,way,c; +int x,y,up,down,t,way,c,citem,ritem,us,ds,chkss,gitem,sstime,n,i,m; void Count() { @@ -323,7 +326,7 @@ DataPack.write(0x80); wait_us(1); Latch=1; - wait_ms(500); + wait_ms(300); } @@ -339,7 +342,99 @@ DataPack.write(0x01); wait_us(1); Latch=1; - wait_ms(500); + wait_ms(300); +} + +int ranitem_x() +{ + int xrand; + + xrand=ran.read()*1000; + xrand=xrand%8; + + return xrand; + +} + +int ranitem_y() +{ + int yrand; + + yrand=ran.read()*1000; + yrand=yrand%2; + + if(yrand==0) { + yrand=3; + } else { + yrand=4; + } + + return yrand; + +} + +void ranitem(int xrand,int yrand) +{ + Latch=0; + DataPack.write(Col[xrand]); + wait_us(1); + DataPack.write(Col[xrand]); + wait_us(1); + DataPack.write(Col[xrand]); + wait_us(1); + DataPack.write(Row[yrand]); + wait_us(1); + Latch=1; +} + +//color >> red=0 , yello=1 , green=2 +int BaseUnderSS(int color) +{ + VR_value0 = VR0.read(); + VR_value0 = VR_value0*4; + + if(VR_value0<=1) { + //base1 + BaseColorUnder(6,color); + return 1; + } else if(VR_value0>1&&VR_value0<=2) { + //base2 + BaseColorUnder(7,color); + return 2; + } else if(VR_value0>2&&VR_value0<=3) { + //base3 + BaseColorUnder(8,color); + return 3; + } else if(VR_value0>3&&VR_value0<=4) { + //base4 + BaseColorUnder(9,color); + return 4; + } +} + +//color >> red=0 , yello=1 , green=2 +int BaseUpperSS(int color) +{ + VR_value1 = VR1.read(); + VR_value1 = VR_value1*4; + + if(VR_value1<=1) { + //base1 + BaseColorUpper(6,color); + return 1; + } else if(VR_value1>1&&VR_value1<=2) { + //base2 + BaseColorUpper(7,color); + return 2; + } else if(VR_value1>2&&VR_value1<=3) { + //base3 + BaseColorUpper(8,color); + return 3; + } else if(VR_value1>3&&VR_value1<=4) { + //base4 + BaseColorUpper(9,color); + return 4; + } } int main() @@ -347,15 +442,21 @@ DataPack.frequency(100000); DataPack.format(8,0); - way=0; - srand(time(NULL)); + int chk,lifeup=2,lifeun=2; + int xrand,yrand; chk=ran.read()*1000; chk=chk%2; - //Count(); + Count(); + while(1) { + us=0; + ds=0; + chkss=0; + gitem=0; + way=0; while(1) { if(chk==0) { if(UnderStart(lifeun)==1) { @@ -370,6 +471,13 @@ BaseUnder(lifeun); } } + + citem=0; + ritem=ran.read()*1000; + ritem=(ritem%5)+1; + xrand=ranitem_x(); + yrand=ranitem_y(); + while(1) { if(chk==0) { for(y=2; y<7; y++) { @@ -378,9 +486,226 @@ } x=x+way; - for(t=0; t<800; t++) { - BaseUnder(lifeun); - up=BaseUpper(lifeup); + for(t=0; t<600; t++) { + if(citem>ritem&&gitem!=1) { + ranitem(xrand,yrand); + chkss=1; + } + + Latch=0; + DataPack.write(Col[x]); + wait_us(1); + DataPack.write(0xFF); + wait_us(1); + DataPack.write(Col[x]); + wait_us(1); + DataPack.write(Row[y]); + wait_us(1); + Latch=1; + + if(x==xrand&&y==yrand&&chkss==1&&gitem!=1) { + ds=1; + gitem=1; + sstime=0; + } + + if(ds==1) { + BaseUnderSS(lifeun); + up=BaseUpper(lifeup); + } else if(us==1) { + BaseUnder(lifeun); + up=BaseUpperSS(lifeup); + } else { + BaseUnder(lifeun); + up=BaseUpper(lifeup); + } + } + } + chk=1; + } + if(us==1) { + if(x==0) { + if(up>1) { + lifeup=lifeup-1; + uplose(x); + break; + } + way=-1; + } + if(x==1) { + if(up>2) { + lifeup=lifeup-1; + uplose(x); + break; + } else if(up==1) { + way=-1; + } else way=-1; + } + if(x==2) { + if(up>3) { + lifeup=lifeup-1; + uplose(x); + break; + } else if(up==1) { + way=0; + } else if(up==2) { + way=-1; + } else way=-1; + } + if(x==3) { + if(up==1) { + way=1; + } else if(up==2) { + way=0; + } else if(up==3) { + way=-1; + } else way=-1; + } + if(x==4) { + if(up==1) { + way=1; + } else if(up==2) { + way=1; + } else if(up==3) { + way=0; + } else way=-1; + } + if(x==5) { + if(up<2) { + lifeup=lifeup-1; + uplose(x); + break; + } else if(up==2) { + way=1; + } else if(up==3) { + way=1; + } else way=0; + } + if(x==6) { + if(up<3) { + lifeup=lifeup-1; + uplose(x); + break; + } else if(up==3) { + way=1; + } else way=1; + } + if(x==7) { + if(up<4) { + lifeup=lifeup-1; + uplose(x); + break; + } + way=1; + } + } else { + if(x==0) { + if(up>1) { + lifeup=lifeup-1; + uplose(x); + break; + } + way=-1; + } + if(x==1) { + if(up>2) { + lifeup=lifeup-1; + uplose(x); + break; + } else if(up==1) { + way=0; + } else way=-1; + } + if(x==2) { + if(up>3) { + lifeup=lifeup-1; + uplose(x); + break; + } else if(up==1) { + way=1; + } else if(up==2) { + way=0; + } else way=-1; + } + if(x==3) { + if(up<2||up>4) { + lifeup=lifeup-1; + uplose(x); + break; + } else if(up==2) { + way=1; + } else if(up==3) { + way=0; + } else way=-1; + } + if(x==4) { + if(up<3||up>5) { + lifeup=lifeup-1; + uplose(x); + break; + } else if(up==3) { + way=1; + } else if(up==4) { + way=0; + } else way=-1; + } + if(x==5) { + if(up<4) { + lifeup=lifeup-1; + uplose(x); + break; + } else if(up==4) { + way=1; + } else if(up==5) { + way=0; + } else way=-1; + } + if(x==6) { + if(up<5) { + lifeup=lifeup-1; + uplose(x); + break; + } else if(up==5) { + way=1; + } else way=0; + } + if(x==7) { + if(up<6) { + lifeup=lifeup-1; + uplose(x); + break; + } + way=1; + } + } + citem++; + sstime++; + if(sstime==5) { + us=0; + ds=0; + chkss=0; + gitem=0; + citem=0; + ritem=ran.read()*1000; + ritem=(ritem%5)+1; + xrand=ranitem_x(); + yrand=ranitem_y(); + } + + + if(chk==1) { + for(y=5; y>0; y--) { + + if(x>6||x<1) { + way=way*-1; + } + + x=x+way; + for(t=0; t<600; t++) { + if(citem>ritem&&gitem!=1) { + ranitem(xrand,yrand); + chkss=1; + } Latch=0; DataPack.write(Col[x]); @@ -392,210 +717,461 @@ DataPack.write(Row[y]); wait_us(1); Latch=1; - } - } - chk=1; - } + + if(x==xrand&&y==yrand&&chkss==1&&gitem!=1) { + us=1; + gitem=1; + sstime=0; + } - if(x==0) { - if(up>1) { - lifeup=lifeup-1; - uplose(x); - break; - } - way=-1; - } - if(x==1) { - if(up>2) { - lifeup=lifeup-1; - uplose(x); - break; - } else if(up==1) { - way=0; - } else way=-1; - } - if(x==2) { - if(up>3) { - lifeup=lifeup-1; - uplose(x); - break; - } else if(up==1) { - way=1; - } else if(up==2) { - way=0; - } else way=-1; - } - if(x==3) { - if(up<2||up>4) { - lifeup=lifeup-1; - uplose(x); - break; - } else if(up==2) { - way=1; - } else if(up==3) { - way=0; - } else way=-1; - } - if(x==4) { - if(up<3||up>5) { - lifeup=lifeup-1; - uplose(x); - break; - } else if(up==3) { - way=1; - } else if(up==4) { - way=0; - } else way=-1; - } - if(x==5) { - if(up<4) { - lifeup=lifeup-1; - uplose(x); - break; - } else if(up==4) { - way=1; - } else if(up==5) { - way=0; - } else way=-1; - } - if(x==6) { - if(up<5) { - lifeup=lifeup-1; - uplose(x); - break; - } else if(up==5) { - way=1; - } else way=0; - } - if(x==7) { - if(up<6) { - lifeup=lifeup-1; - uplose(x); - break; - } - way=1; - } - - if(chk==1) { - for(y=5; y>0; y--) { - - if(x>6||x<1) { - way=way*-1; - } - - x=x+way; - for(t=0; t<800; t++) { - down=BaseUnder(lifeun); - BaseUpper(lifeup); - - Latch=0; - DataPack.write(Col[x]); - wait_us(1); - DataPack.write(0xFF); - wait_us(1); - DataPack.write(Col[x]); - wait_us(1); - DataPack.write(Row[y]); - wait_us(1); - Latch=1; + if(ds==1) { + down=BaseUnderSS(lifeun); + BaseUpper(lifeup); + } else if(us==1) { + down=BaseUnder(lifeun); + BaseUpperSS(lifeup); + } else { + down=BaseUnder(lifeun); + BaseUpper(lifeup); + } } } chk=0; } - - if(x==0) { - if(down>1) { - lifeun=lifeun-1; - downlose(x); - break; + if(ds==1) { + if(x==0) { + if(down>1) { + lifeun=lifeun-1; + downlose(x); + break; + } + way=-1; + } + if(x==1) { + if(down>2) { + lifeun=lifeun-1; + downlose(x); + break; + } else if(down==1) { + way=-1; + } else way=-1; + } + if(x==2) { + if(down>3) { + lifeun=lifeun-1; + downlose(x); + break; + } else if(down==1) { + way=0; + } else if(down==2) { + way=-1; + } else way=-1; } - way=-1; - } - if(x==1) { - if(down>2) { - lifeun=lifeun-1; - downlose(x); - break; - } else if(down==1) { - way=0; - } else way=-1; - } - if(x==2) { - if(down>3) { - lifeun=lifeun-1; - downlose(x); - break; - } else if(down==1) { - way=1; - } else if(down==2) { - way=0; - } else way=-1; - } - if(x==3) { - if(down<2||down>4) { - lifeun=lifeun-1; - downlose(x); - break; - } else if(down==2) { + if(x==3) { + if(down==1) { + way=1; + } else if(down==2) { + way=0; + } else if(down==3) { + way=-1; + } else way=-1; + } + if(x==4) { + if(down==1) { + way=1; + } else if(down==2) { + way=1; + } else if(down==3) { + way=0; + } else way=-1; + } + if(x==5) { + if(down<2) { + lifeun=lifeun-1; + downlose(x); + break; + } else if(down==2) { + way=1; + } else if(down==3) { + way=1; + } else way=0; + } + if(x==6) { + if(down<3) { + lifeun=lifeun-1; + downlose(x); + break; + } else if(down==3) { + way=1; + } else way=1; + } + if(x==7) { + if(down<4) { + lifeun=lifeun-1; + downlose(x); + break; + } way=1; - } else if(down==3) { - way=0; - } else way=-1; - } - if(x==4) { - if(down<3||down>5) { - lifeun=lifeun-1; - downlose(x); - break; - } else if(down==3) { + } + } else { + if(x==0) { + if(down>1) { + lifeun=lifeun-1; + downlose(x); + break; + } + way=-1; + } + if(x==1) { + if(down>2) { + lifeun=lifeun-1; + downlose(x); + break; + } else if(down==1) { + way=0; + } else way=-1; + } + if(x==2) { + if(down>3) { + lifeun=lifeun-1; + downlose(x); + break; + } else if(down==1) { + way=1; + } else if(down==2) { + way=0; + } else way=-1; + } + if(x==3) { + if(down<2||down>4) { + lifeun=lifeun-1; + downlose(x); + break; + } else if(down==2) { + way=1; + } else if(down==3) { + way=0; + } else way=-1; + } + if(x==4) { + if(down<3||down>5) { + lifeun=lifeun-1; + downlose(x); + break; + } else if(down==3) { + way=1; + } else if(down==4) { + way=0; + } else way=-1; + } + if(x==5) { + if(down<4) { + lifeun=lifeun-1; + downlose(x); + break; + } else if(down==4) { + way=1; + } else if(down==5) { + way=0; + } else way=-1; + } + if(x==6) { + if(down<5) { + lifeun=lifeun-1; + downlose(x); + break; + } else if(down==5) { + way=1; + } else way=0; + } + if(x==7) { + if(down<6) { + lifeun=lifeun-1; + downlose(x); + break; + } way=1; - } else if(down==4) { - way=0; - } else way=-1; + } } - if(x==5) { - if(down<4) { - lifeun=lifeun-1; - downlose(x); - break; - } else if(down==4) { - way=1; - } else if(down==5) { - way=0; - } else way=-1; - } - if(x==6) { - if(down<5) { - lifeun=lifeun-1; - downlose(x); - break; - } else if(down==5) { - way=1; - } else way=0; - } - if(x==7) { - if(down<6) { - lifeun=lifeun-1; - downlose(x); - break; - } - way=1; + + citem++; + sstime++; + if(sstime==5) { + us=0; + ds=0; + chkss=0; + gitem=0; + citem=0; + ritem=ran.read()*1000; + ritem=(ritem%5)+1; + xrand=ranitem_x(); + yrand=ranitem_y(); } } if(lifeup<0) { while(UnderButton==0&&UpperButton==0) { + Latch=0; + DataPack.write(0xE7); + wait_us(1); + DataPack.write(0xFF); + wait_us(1); + DataPack.write(0xFF); + wait_us(1); + DataPack.write(0x18); + Latch=1; + wait_ms(100); + Latch=0; + DataPack.write(0xC3); + wait_us(1); + DataPack.write(0xFF); + wait_us(1); + DataPack.write(0xFF); + wait_us(1); + DataPack.write(0x3C); + Latch=1; + wait_ms(100); + + Latch=0; + DataPack.write(0x81); + wait_us(1); + DataPack.write(0xFF); + wait_us(1); + DataPack.write(0xFF); + wait_us(1); + DataPack.write(0x7E); + Latch=1; + wait_ms(100); + + Latch=0; + DataPack.write(0x00); + wait_us(1); + DataPack.write(0xFF); + wait_us(1); + DataPack.write(0xFF); + wait_us(1); + DataPack.write(0xFF); + Latch=1; + wait_ms(100); + + for(i=0; i<500; i++) { + Latch=0; + DataPack.write(0x00); + wait_us(1); + DataPack.write(0xFF); + wait_us(1); + DataPack.write(0xFF); + wait_us(1); + DataPack.write(0xE7); + wait_us(1); + Latch=1; + Latch=0; + DataPack.write(0x18); + wait_us(1); + DataPack.write(0xFF); + wait_us(1); + DataPack.write(0xFF); + wait_us(1); + DataPack.write(0x18); + wait_us(1); + Latch=1; + } + + for(m=0; m<500; m++) { + Latch=0; + DataPack.write(0x00); + wait_us(1); + DataPack.write(0xFF); + wait_us(1); + DataPack.write(0xFF); + wait_us(1); + DataPack.write(0xC3); + wait_us(1); + Latch=1; + Latch=0; + DataPack.write(0x3C); + wait_us(1); + DataPack.write(0xFF); + wait_us(1); + DataPack.write(0xFF); + wait_us(1); + DataPack.write(0x3C); + wait_us(1); + Latch=1; + } + + for(n=0; n<500; n++) { + Latch=0; + DataPack.write(0x00); + wait_us(1); + DataPack.write(0xFF); + wait_us(1); + DataPack.write(0xFF); + wait_us(1); + DataPack.write(0x81); + wait_us(1); + Latch=1; + Latch=0; + DataPack.write(0x7E); + wait_us(1); + DataPack.write(0xFF); + wait_us(1); + DataPack.write(0xFF); + wait_us(1); + DataPack.write(0x7E); + wait_us(1); + Latch=1; + } + + Latch=0; + DataPack.write(0xFF); + wait_us(1); + DataPack.write(0xFF); + wait_us(1); + DataPack.write(0xFF); + wait_us(1); + DataPack.write(0x00); + wait_us(1); + Latch=1; + wait_ms(100); } lifeup=2; lifeun=2; + wait_ms(500); + Count(); } if(lifeun<0) { while(UnderButton==0&&UpperButton==0) { + Latch=0; + DataPack.write(0xFF); + wait_us(1); + DataPack.write(0xFF); + wait_us(1); + DataPack.write(0xE7); + wait_us(1); + DataPack.write(0x18); + Latch=1; + wait_ms(100); + Latch=0; + DataPack.write(0xFF); + wait_us(1); + DataPack.write(0xFF); + wait_us(1); + DataPack.write(0xC3); + wait_us(1); + DataPack.write(0x3C); + Latch=1; + wait_ms(100); + + Latch=0; + DataPack.write(0xFF); + wait_us(1); + DataPack.write(0xFF); + wait_us(1); + DataPack.write(0x81); + wait_us(1); + DataPack.write(0x7E); + Latch=1; + wait_ms(100); + + Latch=0; + DataPack.write(0xFF); + wait_us(1); + DataPack.write(0xFF); + wait_us(1); + DataPack.write(0x00); + wait_us(1); + DataPack.write(0xFF); + Latch=1; + wait_ms(100); + + for(i=0; i<500; i++) { + Latch=0; + DataPack.write(0xFF); + wait_us(1); + DataPack.write(0xFF); + wait_us(1); + DataPack.write(0x00); + wait_us(1); + DataPack.write(0xE7); + wait_us(1); + Latch=1; + Latch=0; + DataPack.write(0xFF); + wait_us(1); + DataPack.write(0xFF); + wait_us(1); + DataPack.write(0x18); + wait_us(1); + DataPack.write(0x18); + wait_us(1); + Latch=1; + } + + for(m=0; m<500; m++) { + Latch=0; + DataPack.write(0xFF); + wait_us(1); + DataPack.write(0xFF); + wait_us(1); + DataPack.write(0x00); + wait_us(1); + DataPack.write(0xC3); + wait_us(1); + Latch=1; + Latch=0; + DataPack.write(0xFF); + wait_us(1); + DataPack.write(0xFF); + wait_us(1); + DataPack.write(0x3C); + wait_us(1); + DataPack.write(0x3C); + wait_us(1); + Latch=1; + } + + for(n=0; n<500; n++) { + Latch=0; + DataPack.write(0xFF); + wait_us(1); + DataPack.write(0xFF); + wait_us(1); + DataPack.write(0x00); + wait_us(1); + DataPack.write(0x81); + wait_us(1); + Latch=1; + Latch=0; + DataPack.write(0xFF); + wait_us(1); + DataPack.write(0xFF); + wait_us(1); + DataPack.write(0x7E); + wait_us(1); + DataPack.write(0x7E); + wait_us(1); + Latch=1; + } + + Latch=0; + DataPack.write(0xFF); + wait_us(1); + DataPack.write(0xFF); + wait_us(1); + DataPack.write(0xFF); + wait_us(1); + DataPack.write(0x00); + wait_us(1); + Latch=1; + wait_ms(100); } lifeup=2; lifeun=2; + wait_ms(500); + Count(); } } -} +} \ No newline at end of file