FRA221_2015 / Mbed 2 deprecated Project_PokPakGame

Dependencies:   mbed

Fork of Project_PokPakGame by FRA221_7B

Revision:
4:3605c624b64f
Parent:
3:054a677aca64
Child:
5:7041c827932b
--- a/main.cpp	Sat Dec 05 13:48:10 2015 +0000
+++ b/main.cpp	Sat Dec 05 17:19:21 2015 +0000
@@ -1,9 +1,13 @@
 #include "mbed.h"
+#include "time.h"
 
 SPI DataPack(SPI_MOSI, SPI_MISO, SPI_SCK);
 DigitalOut Latch(D10);
 AnalogIn VR0(A0);
 AnalogIn VR1(A1);
+AnalogIn ran(A2);
+DigitalIn UnderButton(D7);
+DigitalIn UpperButton(D6);
 
 float VR_value0,VR_value1;
 int Base[6][3][3]= {
@@ -269,190 +273,329 @@
     }
 }
 
+int UnderStart(int color)
+{
+    down=BaseUnder(color);
+    Latch=0;
+    DataPack.write(Col[down]);
+    wait_us(1);
+    DataPack.write(0xFF);
+    wait_us(1);
+    DataPack.write(Col[down]);
+    wait_us(1);
+    DataPack.write(Row[1]);
+    wait_us(1);
+    Latch=1;
+    if(UnderButton==1) {
+        x=down;
+        return 1;
+    } else return 0;
+}
+
+int UpperStart(int color)
+{
+    up=BaseUpper(color);
+    Latch=0;
+    DataPack.write(Col[up]);
+    wait_us(1);
+    DataPack.write(0xFF);
+    wait_us(1);
+    DataPack.write(Col[up]);
+    wait_us(1);
+    DataPack.write(Row[6]);
+    wait_us(1);
+    Latch=1;
+    if(UpperButton==1) {
+        x=up;
+        return 1;
+    } else return 0;
+}
+
+void uplose(int x)
+{
+    Latch=0;
+    DataPack.write(0xFF);
+    wait_us(1);
+    DataPack.write(0xFF);
+    wait_us(1);
+    DataPack.write(Col[x]);
+    wait_us(1);
+    DataPack.write(0x80);
+    wait_us(1);
+    Latch=1;
+    wait_ms(500);
+
+}
+
+void downlose(int x)
+{
+    Latch=0;
+    DataPack.write(0xFF);
+    wait_us(1);
+    DataPack.write(0xFF);
+    wait_us(1);
+    DataPack.write(Col[x]);
+    wait_us(1);
+    DataPack.write(0x01);
+    wait_us(1);
+    Latch=1;
+    wait_ms(500);
+}
+
 int main()
 {
 
     DataPack.frequency(100000);
     DataPack.format(8,0);
-    x=2;
     way=0;
-    
-    Count();
+    srand(time(NULL));
+    int chk,lifeup=2,lifeun=2;
 
-    while(1) {
-        for(y=2; y<7; y++) {
-
-            if(x>6||x<1) {
-                way=way*-1;
-            }
+    chk=ran.read()*1000;
+    chk=chk%2;
 
-            x=x+way;
-            for(t=0; t<800; t++) {
-                BaseUnder(2);
-                up=BaseUpper(2);
-
-                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;
+    //Count();
+    while(1) {
+        while(1) {
+            if(chk==0) {
+                if(UnderStart(lifeun)==1) {
+                    break;
+                }
+                BaseUpper(lifeup);
+            }
+            if(chk==1) {
+                if(UpperStart(lifeup)==1) {
+                    break;
+                }
+                BaseUnder(lifeun);
             }
         }
+        while(1) {
+            if(chk==0) {
+                for(y=2; y<7; y++) {
+                    if(x>6||x<1) {
+                        way=way*-1;
+                    }
 
-        if(x==0) {
-            if(up>1) {
-                break;
+                    x=x+way;
+                    for(t=0; t<800; t++) {
+                        BaseUnder(lifeun);
+                        up=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;
+                    }
+                }
+                chk=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=0;
+                } else way=-1;
             }
-            way=1;
-        }
-        if(x==1) {
-            if(up>2) {
-                break;
-            } else if(up==1) {
-                way=0;
-            } else way=-1;
-        }
-        if(x==2) {
-            if(up>3) {
-                break;
-            } else if(up==1) {
-                way=1;
-            } else if(up==2) {
-                way=0;
-            } else way=-1;
-        }
-        if(x==3) {
-            if(up<2||up>4) {
-                break;
-            } else if(up==2) {
+            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;
-            } else if(up==3) {
-                way=0;
-            } else way=-1;
-        }
-        if(x==4) {
-            if(up<3||up>5) {
-                break;
-            } else if(up==3) {
-                way=1;
-            } else if(up==4) {
-                way=0;
-            } else way=-1;
-        }
-        if(x==5) {
-            if(up<4) {
-                break;
-            } else if(up==4) {
-                way=1;
-            } else if(up==5) {
-                way=0;
-            } else way=-1;
-        }
-        if(x==6) {
-            if(up<5) {
-                break;
-            } else if(up==5) {
-                way=1;
-            } else way=0;
-        }
-        if(x==7) {
-            if(up<6) {
-                break;
-            }
-            way=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(2);
-                BaseUpper(2);
+            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;
+                        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;
+                    }
+                }
+                chk=0;
             }
-        }
 
-        if(x==0) {
-            if(down>1) {
-                break;
+            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;
             }
-            way=1;
-        }
-        if(x==1) {
-            if(down>2) {
-                break;
-            } else if(down==1) {
-                way=0;
-            } else way=-1;
-        }
-        if(x==2) {
-            if(down>3) {
-                break;
-            } else if(down==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==2) {
-                way=0;
-            } else way=-1;
+            }
+
         }
-        if(x==3) {
-            if(down<2||down>4) {
-                break;
-            } else if(down==2) {
-                way=1;
-            } else if(down==3) {
-                way=0;
-            } else way=-1;
-        }
-        if(x==4) {
-            if(down<3||down>5) {
-                break;
-            } else if(down==3) {
-                way=1;
-            } else if(down==4) {
-                way=0;
-            } else way=-1;
+        if(lifeup<0) {
+            while(UnderButton==0&&UpperButton==0) {
+
+            }
+            lifeup=2;
+            lifeun=2;
         }
-        if(x==5) {
-            if(down<4) {
-                break;
-            } else if(down==4) {
-                way=1;
-            } else if(down==5) {
-                way=0;
-            } else way=-1;
+        if(lifeun<0) {
+            while(UnderButton==0&&UpperButton==0) {
+
+            }
+            lifeup=2;
+            lifeun=2;
         }
-        if(x==6) {
-            if(down<5) {
-                break;
-            } else if(down==5) {
-                way=1;
-            } else way=0;
-        }
-        if(x==7) {
-            if(down<6) {
-                break;
-            }
-            way=1;
-        }
-
     }
 }