2018年12月27日 星期四

week16

期末作品
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);
}

沒有留言:

張貼留言