processing:
import processing.serial.*;
Serial myPort;
int state=0;
int remainTime=0;
float rockX=150, rockY=150, rockVX=0, rockVY=0;
float []fireX=new float[100];
float []fireY=new float[100];
boolean [] fireAlive=new boolean[100];
float []catFireX=new float[100];
float []catFireY=new float[100];
int catFireN=0;
int aaa=0;
byte []data=new byte[3];
PImage imgBG;
PImage imgBB;
PImage imgWW;
void setup(){
String portName=Serial.list()[0];
myPort = new Serial(this, "COM3",9600);
imgBG=loadImage("650.jpg");
imgBB=loadImage("123.png");
imgWW=loadImage("11.jpg");
size(600,400);
for(int i=0;i<10;i++)
{
fireX[i]=random(500);
fireY[i]=random(300);
fireAlive[i]=true;
}
}
void draw(){
if(state==0){
drawOP();
}else if(state==1){
drawPlayer();
}else if(state==2){
drawED();
}else if(state==3){
drawWIN();
}
}
void drawED(){
background(0);
fill(#FF1008);
textSize(30);text("Oops! Game Over Loser~~~",100,200);
}
void drawWIN(){
image(imgWW,0,0,width,height);
fill(#FF1008);
textSize(30);text("You win!",100,200);
text("Great~~~",200,300);
}
void drawPlayer(){
//getData();
//if(rockY<500) rockY+=10;
if(myPort.available()>0){
myPort.readBytes(data);
println(data);
if(data[0]==0)rockY=200;
else rockVX=(data[0]-64)/50.0;
if(data[1]==0)rockX=200;
else rockVY=(data[1]-64)/50.0;
}
image(imgBG,0,0,width,height);
fill(#0242DE);
textSize(30);text("Playing...",10,30);
text("Time: "+remainTime,10,70);
remainTime--;
if(remainTime<=0) state=2;
else if(aaa>9 ) state=3;
for(int i=0;i<100;i++){
fill(#F2B414);
if(fireAlive[i]){
ellipse(fireX[i],fireY[i],10,10);
if(dist(rockX,rockY,fireX[i],fireY[i])<10)
{
fireAlive[i]=false;
aaa++;
catFireX[catFireN]=rockX;
catFireY[catFireN]=rockY;
catFireN++;
}
}
}
fill(#3E9B64); ellipse(rockX,rockY,30,30);
catFireX[0]=rockX;
catFireY[0]=rockY;
rockX += rockVX;
rockY += rockVY;
noStroke();
for(int i=catFireN-1;i>0;i--){
fill(#F2B414);
ellipse(catFireX[i],catFireY[i],10,10);
if(frameCount%3==0){
catFireX[i]=catFireX[i-1];
catFireY[i]=catFireY[i-1];
}
}
}
void keyPressed(){
if(keyCode==UP) rockVY=-1;
if(keyCode==DOWN) rockVY=+1;
if(keyCode==RIGHT) rockVX=+1;
if(keyCode==LEFT) rockVX=-1;
}
void keyReleased(){
if(keyCode==UP) rockVY=0;
if(keyCode==DOWN) rockVY=0;
if(keyCode==RIGHT) rockVX=0;
if(keyCode==LEFT) rockVX=0;
}
void drawOP(){
image(imgBG,0,0,width,height);
fill(#6FB1FF);
textSize(30);text("You need to eat all the cookies ",10,100);
image(imgBB,300,150,200,300);
if( dist(mouseX,mouseY,450,200)<50)
{
if(mousePressed&&mouseButton==LEFT){
state=1;
remainTime=20*60;
}
}
}
arduno:
void setup() {
pinMode(2, INPUT_PULLUP);
Serial.begin(9600);
}
byte data[3];
void loop() {
int x = analogRead(A0);
int y = analogRead(A1);
data[0]=x/8;
data[1]=y/8;
if(data[0]==0)data[0]=1;
if(data[1]==0)data[1]=1;
if(digitalRead(2)==LOW) data[2]=1;
else data[2]=0;
Serial.write(data,3);
delay(50);
}
沒有留言:
張貼留言