2018年12月31日 星期一
2018年12月27日 星期四
Week16_黃登煜
加音樂
PImage imgleft,imgup,imgdown,imgright,imgdance;
PImage imgrightqq,imgleftqq,imgupqq,imgdownqq;
PImage []direction = new PImage[4];
float leftX=90,upX=230,downX=370,rightX=510;
float leftY=900,upY=900,downY=900,rightY=900;
float leftVY=6;
float upVY=5;
float downVY=4;
float rightVY=7;
import ddf.minim.*;
Minim minim;
AudioPlayer player1,player2,player3,player4,player5;
int score=0;
void setup(){
size(600,900);
background(255);
imgdance=loadImage("dance.jpg");
imgleft=loadImage("left.png");
imgup=loadImage("up.png");
imgdown=loadImage("down.png");
imgright=loadImage("right.png");
imgrightqq=loadImage("rightqq.png");
imgleftqq=loadImage("leftqq.png");
imgupqq=loadImage("upqq.png");
imgdownqq=loadImage("downqq.png");
imageMode(CENTER);
direction[0]=imgleft;
direction[1]=imgup;
direction[2]=imgdown;
direction[3]=imgright;
minim = new Minim(this);
player1 = minim.loadFile("BLACKPINK.mp3");
}
int choose=0;
void draw(){
player1.play();
image(imgdance,width/2,height/2,width,height);
image(imgleftqq,90,150,100,100);
image(imgupqq,230,150,100,100);
image(imgdownqq,370,150,100,100);
image(imgrightqq,510,150,100,100);
fill(#C75AF7);textSize(50);text("Score:"+score,30,80);
if(choose==1){
fill(#C75AF7);textSize(50);text("Great",400,80);
}else if(choose==2){
fill(#C75AF7);textSize(50);text("Good",400,80);
}else if(choose==3){
fill(#C75AF7);textSize(50);text("Cool",400,80);
}else if(choose==4){
fill(#C75AF7);textSize(50);text("Bad",400,80);
}else if(choose==5){
fill(#C75AF7);textSize(50);text("Miss",400,80);
}
if(leftY<0){
choose=5;
score-=4;
leftX=90;
leftY=900;
leftVY=random(4,7);
}else if(upY<0){
choose=5;
score-=4;
upX=230;
upY=900;
upVY=random(4,7);
}else if(downY<0){
choose=5;
score-=4;
downX=370;
downY=900;
downVY=random(4,7);
}else if(rightY<0){
choose=5;
score-=4;
rightX=510;
rightY=900;
rightVY=random(4,7);
}
leftY-=leftVY;
upY-=upVY;
downY-=downVY;
rightY-=rightVY;
image(imgleft,leftX,leftY,100,100);
image(imgup,upX,upY,100,100);
image(imgdown,downX,downY,100,100);
image(imgright,rightX,rightY,100,100);
}
void killleft(){
leftX=90;
leftY=900;
leftVY=random(4,7);
}
void killup(){
upX=230;
upY=900;
upVY=random(4,7);
}
void killdown(){
downX=370;
downY=900;
downVY=random(4,7);
}
void killright(){
rightX=510;
rightY=900;
rightVY=random(4,7);
}
void keyPressed(){
if(key=='1'){
if(dist(90,150,leftX,leftY)<10){
score+=5;
killleft();
choose=1;
}
else if(dist(90,150,leftX,leftY)<30){
score+=3;
killleft();
choose=2;
}
else if(dist(90,150,leftX,leftY)<60){
score-=1;
killleft();
choose=3;
}
else if(dist(90,150,leftX,leftY)<90){
score-=2;
killleft();
choose=4;
}else if(dist(90,150,leftX,leftY)<120){
score-=3;
killleft();
choose=5;
}
}
if(key=='2'){
if(dist(230,150,upX,upY)<10){
score+=5;
killup();
choose=1;
}
else if(dist(230,150,upX,upY)<30){
score+=3;
killup();
choose=2;
}
else if(dist(230,150,upX,upY)<60){
score-=1;
killup();
choose=3;
}
else if(dist(230,150,upX,upY)<90){
score-=2;
killup();
choose=4;
}else if(dist(230,150,upX,upY)<120){
score-=3;
killup();
choose=5;
}
}
if(key=='3'){
if(dist(370,150,downX,downY)<10){
score+=5;
killdown();
choose=1;
}
else if(dist(370,150,downX,downY)<30){
score+=3;
killdown();
choose=2;
}
else if(dist(370,150,downX,downY)<60){
score-=1;
killdown();
choose=3;
}
else if(dist(370,150,downX,downY)<90){
score-=2;
killdown();
choose=4;
}else if(dist(370,150,downX,downY)<120){
score-=3;
killdown();
choose=5;
}
}
if(key=='4'){
if(dist(510,150,rightX,rightY)<10){
score+=5;
killright();
choose=1;
}
else if(dist(510,150,rightX,rightY)<30){
score+=3;
killright();
choose=2;
}
else if(dist(510,150,rightX,rightY)<60){
score-=1;
killright();
choose=3;
}
else if(dist(510,150,rightX,rightY)<90){
score-=2;
killright();
choose=4;
}else if(dist(510,150,rightX,rightY)<120){
score-=3;
killright();
choose=5;
}
}
}
PImage imgleft,imgup,imgdown,imgright,imgdance;
PImage imgrightqq,imgleftqq,imgupqq,imgdownqq;
PImage []direction = new PImage[4];
float leftX=90,upX=230,downX=370,rightX=510;
float leftY=900,upY=900,downY=900,rightY=900;
float leftVY=6;
float upVY=5;
float downVY=4;
float rightVY=7;
import ddf.minim.*;
Minim minim;
AudioPlayer player1,player2,player3,player4,player5;
int score=0;
void setup(){
size(600,900);
background(255);
imgdance=loadImage("dance.jpg");
imgleft=loadImage("left.png");
imgup=loadImage("up.png");
imgdown=loadImage("down.png");
imgright=loadImage("right.png");
imgrightqq=loadImage("rightqq.png");
imgleftqq=loadImage("leftqq.png");
imgupqq=loadImage("upqq.png");
imgdownqq=loadImage("downqq.png");
imageMode(CENTER);
direction[0]=imgleft;
direction[1]=imgup;
direction[2]=imgdown;
direction[3]=imgright;
minim = new Minim(this);
player1 = minim.loadFile("BLACKPINK.mp3");
}
int choose=0;
void draw(){
player1.play();
image(imgdance,width/2,height/2,width,height);
image(imgleftqq,90,150,100,100);
image(imgupqq,230,150,100,100);
image(imgdownqq,370,150,100,100);
image(imgrightqq,510,150,100,100);
fill(#C75AF7);textSize(50);text("Score:"+score,30,80);
if(choose==1){
fill(#C75AF7);textSize(50);text("Great",400,80);
}else if(choose==2){
fill(#C75AF7);textSize(50);text("Good",400,80);
}else if(choose==3){
fill(#C75AF7);textSize(50);text("Cool",400,80);
}else if(choose==4){
fill(#C75AF7);textSize(50);text("Bad",400,80);
}else if(choose==5){
fill(#C75AF7);textSize(50);text("Miss",400,80);
}
if(leftY<0){
choose=5;
score-=4;
leftX=90;
leftY=900;
leftVY=random(4,7);
}else if(upY<0){
choose=5;
score-=4;
upX=230;
upY=900;
upVY=random(4,7);
}else if(downY<0){
choose=5;
score-=4;
downX=370;
downY=900;
downVY=random(4,7);
}else if(rightY<0){
choose=5;
score-=4;
rightX=510;
rightY=900;
rightVY=random(4,7);
}
leftY-=leftVY;
upY-=upVY;
downY-=downVY;
rightY-=rightVY;
image(imgleft,leftX,leftY,100,100);
image(imgup,upX,upY,100,100);
image(imgdown,downX,downY,100,100);
image(imgright,rightX,rightY,100,100);
}
void killleft(){
leftX=90;
leftY=900;
leftVY=random(4,7);
}
void killup(){
upX=230;
upY=900;
upVY=random(4,7);
}
void killdown(){
downX=370;
downY=900;
downVY=random(4,7);
}
void killright(){
rightX=510;
rightY=900;
rightVY=random(4,7);
}
void keyPressed(){
if(key=='1'){
if(dist(90,150,leftX,leftY)<10){
score+=5;
killleft();
choose=1;
}
else if(dist(90,150,leftX,leftY)<30){
score+=3;
killleft();
choose=2;
}
else if(dist(90,150,leftX,leftY)<60){
score-=1;
killleft();
choose=3;
}
else if(dist(90,150,leftX,leftY)<90){
score-=2;
killleft();
choose=4;
}else if(dist(90,150,leftX,leftY)<120){
score-=3;
killleft();
choose=5;
}
}
if(key=='2'){
if(dist(230,150,upX,upY)<10){
score+=5;
killup();
choose=1;
}
else if(dist(230,150,upX,upY)<30){
score+=3;
killup();
choose=2;
}
else if(dist(230,150,upX,upY)<60){
score-=1;
killup();
choose=3;
}
else if(dist(230,150,upX,upY)<90){
score-=2;
killup();
choose=4;
}else if(dist(230,150,upX,upY)<120){
score-=3;
killup();
choose=5;
}
}
if(key=='3'){
if(dist(370,150,downX,downY)<10){
score+=5;
killdown();
choose=1;
}
else if(dist(370,150,downX,downY)<30){
score+=3;
killdown();
choose=2;
}
else if(dist(370,150,downX,downY)<60){
score-=1;
killdown();
choose=3;
}
else if(dist(370,150,downX,downY)<90){
score-=2;
killdown();
choose=4;
}else if(dist(370,150,downX,downY)<120){
score-=3;
killdown();
choose=5;
}
}
if(key=='4'){
if(dist(510,150,rightX,rightY)<10){
score+=5;
killright();
choose=1;
}
else if(dist(510,150,rightX,rightY)<30){
score+=3;
killright();
choose=2;
}
else if(dist(510,150,rightX,rightY)<60){
score-=1;
killright();
choose=3;
}
else if(dist(510,150,rightX,rightY)<90){
score-=2;
killright();
choose=4;
}else if(dist(510,150,rightX,rightY)<120){
score-=3;
killright();
choose=5;
}
}
}
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);
}
QAQ筆記 WEEK16
期末作品
Processing :
import ddf.minim.*;
Minim minim;
AudioPlayer player;
import processing.serial.*;
Serial myPort1;
Serial myPort2;
PImage imgA, imgB, imgBG ,imgOPBG;
PImage imgBomb, imgRock, imgBombBG;
int [][]grid=new int[100][100];
int state=0;
int remainTime=0;
void setup(){
size(800, 640);
minim = new Minim(this);
player = minim.loadFile("sd.mp3");
player.loop();
myPort1 = new Serial(this,"COM5",9600);
myPort2 = new Serial(this,"COM4",9600);
imgBG = loadImage("bg.jpg");
imgA = loadImage("player22.png");
imgB = loadImage("player1.png");
imgBomb = loadImage("bomb.png");
imgRock = loadImage("rock.png");
imgBombBG = loadImage("bombbg.jpg");
imgOPBG = loadImage("OPBG.jpg");
grid[0][0]=3; grid[9][7]=4;
grid[1][0]=3; grid[9][6]=4;
grid[0][1]=3; grid[8][7]=4;
for(int i=0;i<35;i++){
int a=int(random(10)), b=int(random(10));
while(grid[a][b]!=0){
a=int(random(10)); b=int(random(10));
}
grid[a][b]=2;
if(a==bombA[i] && b==bombB[i] || a==bombA[i]+1 && b==bombB[i] || a==bombA[i]-1 && b==bombB[i] || a==bombA[i] && b==bombB[i]+1 || a==bombA[i] && b==bombB[i]-1){
grid[a][b]=0;
}
}
grid[0][0]=0; grid[9][7]=0;
grid[1][0]=0; grid[9][6]=0;
grid[0][1]=0; grid[8][7]=0;
delay(100);
}
boolean boom=false;
int userA=9, userB=7;
int userC=0, userD=0;
int bombN=0;
int []bombA=new int[100];
int []bombB=new int[100];
int []bombS=new int[100];
int []bombT=new int[100];
//int Button=0;
//int XL, XR, YU, YD, Button;
int XXL, XXR, YYU, YYD;
void draw(){
println(frameRate);
getData();//put data in XX,YY,Button
if(state==0){
drawOP();
if(keyCode== ENTER) state=1;
}else if(state==1){
drawPlayer();
}
}
void drawPlayer(){
noStroke();
image(imgBG,0,0,width,height);
image(imgA,userA*80-20,userB*80-10,120,100);
image(imgB,userC*80-5,userD*80-5,90,90);
for(int i=0;i<bombN;i++){
int a=bombA[i] , b=bombB[i];
if(bombT[i]>0){
grid[a][b]=1;
image(imgBomb,bombA[i]*80+5, bombB[i]*80, 80, 80);
bombT[i]--;
if(bombT[i]==0) bombT[i]=-13;
}
if(bombT[i]<0){
for(int k=-bombS[i];k<=bombS[i];k++){
image(imgBombBG,(bombA[i]+k)*80, (bombB[i])*80, 80, 80);
image(imgBombBG,(bombA[i])*80, (bombB[i]+k)*80, 80, 80);
grid[a][b]=0;
if(grid[a+1][b]!=0){grid[a+1][b]=0;}
if(a-1>=0){if(grid[a-1][b]!=0)grid[a-1][b]=0;}
if(grid[a][b+1]!=0){grid[a][b+1]=0;}
if(b-1>=0){if(grid[a][b-1]!=0)grid[a][b-1]=0;}
if(userA==bombA[i] && userB==bombB[i] || userA==bombA[i]+1 && userB==bombB[i] || userA==bombA[i]-1 && userB==bombB[i] || userA==bombA[i] && userB==bombB[i]+1 || userA==bombA[i] && userB==bombB[i]-1)
{boom=true;}
if(userC==bombA[i] && userD==bombB[i] || userC==bombA[i]+1 && userD==bombB[i] || userC==bombA[i]-1 && userD==bombB[i] || userC==bombA[i] && userD==bombB[i]+1 || userC==bombA[i] && userD==bombB[i]-1)
{boom=true;}
if(userA==bombA[i] && userB==bombB[i] || userA==bombA[i]+1 && userB==bombB[i] || userA==bombA[i]-1 && userB==bombB[i] || userA==bombA[i] && userB==bombB[i]+1 || userA==bombA[i] && userB==bombB[i]-1){ userA=-3; userB=-3;}
if(userC==bombA[i] && userD==bombB[i] || userC==bombA[i]+1 && userD==bombB[i] || userC==bombA[i]-1 && userD==bombB[i] || userC==bombA[i] && userD==bombB[i]+1 || userC==bombA[i] && userD==bombB[i]-1){ userC=-3; userD=-3;}
}
bombT[i]++;
}
}
for(int x=0;x<10;x++){
for(int y=0;y<8;y++){
if(grid[x][y]==2) image(imgRock,x*80, y*80, 80, 80);
}
}
if(boom){
textSize(100);
fill(#FF4800); text("GameOver", 150,200);
}
}
void drawOP(){
image(imgOPBG,0,0,width,height);
fill(#FF0000);
textSize(50); text("PRESS ENTER TO START",120,450);
}
byte [] data1 = new byte[3];
byte [] data2 = new byte[3];
byte oldButton1=1, oldButton2=1;
void getData(){
if(myPort1.available()>0)
{
myPort1.readBytes(data1);
if(data1[0]<30){
if(userA-1>=0 && grid[userA-1][userB]==0)
userA--;
}
if(data1[0]>100){
if(userA+1<=9 && grid[userA+1][userB]==0)
userA++;
}
if(data1[1]<30){
if(userB-1>=0 && grid[userA][userB-1]==0)
userB--;
}
if(data1[1]>100){
if(userB+1<=7 && grid[userA][userB+1]==0)
userB++;
}
if(data1[2]==0 && oldButton1==1 ){
putBomb1();
}
oldButton1=data1[2];
}
if(myPort2.available()>0)
{
println(data1);
myPort2.readBytes(data2);
if(data2[0]<30){
if(userC-1>=0 && grid[userC-1][userD]==0)
userC--;
}
if(data2[0]>100){
if(userC+1<=9 && grid[userC+1][userD]==0)
userC++;
}
if(data2[1]<30){
if(userD-1>=0 && grid[userC][userD-1]==0)
userD--;
}
if(data2[1]>100){
if(userD+1<=7 && grid[userC][userD+1]==0)
userD++;
}
if(data2[2]==0 && oldButton2==1){
putBomb2();
}
oldButton2=data2[2];
}
}
void putBomb1(){
bombA[bombN]=userA; bombB[bombN]=userB;
bombS[bombN]=1; bombT[bombN]=25;
bombN++;
}
void putBomb2(){
bombA[bombN]=userC; bombB[bombN]=userD;
bombS[bombN]=1; bombT[bombN]=25;
bombN++;
}
Arduino :
Minim minim;
AudioPlayer player;
import processing.serial.*;
Serial myPort1;
Serial myPort2;
PImage imgA, imgB, imgBG ,imgOPBG;
PImage imgBomb, imgRock, imgBombBG;
int [][]grid=new int[100][100];
int state=0;
int remainTime=0;
void setup(){
size(800, 640);
minim = new Minim(this);
player = minim.loadFile("sd.mp3");
player.loop();
myPort1 = new Serial(this,"COM5",9600);
myPort2 = new Serial(this,"COM4",9600);
imgBG = loadImage("bg.jpg");
imgA = loadImage("player22.png");
imgB = loadImage("player1.png");
imgBomb = loadImage("bomb.png");
imgRock = loadImage("rock.png");
imgBombBG = loadImage("bombbg.jpg");
imgOPBG = loadImage("OPBG.jpg");
grid[0][0]=3; grid[9][7]=4;
grid[1][0]=3; grid[9][6]=4;
grid[0][1]=3; grid[8][7]=4;
for(int i=0;i<35;i++){
int a=int(random(10)), b=int(random(10));
while(grid[a][b]!=0){
a=int(random(10)); b=int(random(10));
}
grid[a][b]=2;
if(a==bombA[i] && b==bombB[i] || a==bombA[i]+1 && b==bombB[i] || a==bombA[i]-1 && b==bombB[i] || a==bombA[i] && b==bombB[i]+1 || a==bombA[i] && b==bombB[i]-1){
grid[a][b]=0;
}
}
grid[0][0]=0; grid[9][7]=0;
grid[1][0]=0; grid[9][6]=0;
grid[0][1]=0; grid[8][7]=0;
delay(100);
}
boolean boom=false;
int userA=9, userB=7;
int userC=0, userD=0;
int bombN=0;
int []bombA=new int[100];
int []bombB=new int[100];
int []bombS=new int[100];
int []bombT=new int[100];
//int Button=0;
//int XL, XR, YU, YD, Button;
int XXL, XXR, YYU, YYD;
void draw(){
println(frameRate);
getData();//put data in XX,YY,Button
if(state==0){
drawOP();
if(keyCode== ENTER) state=1;
}else if(state==1){
drawPlayer();
}
}
void drawPlayer(){
noStroke();
image(imgBG,0,0,width,height);
image(imgA,userA*80-20,userB*80-10,120,100);
image(imgB,userC*80-5,userD*80-5,90,90);
for(int i=0;i<bombN;i++){
int a=bombA[i] , b=bombB[i];
if(bombT[i]>0){
grid[a][b]=1;
image(imgBomb,bombA[i]*80+5, bombB[i]*80, 80, 80);
bombT[i]--;
if(bombT[i]==0) bombT[i]=-13;
}
if(bombT[i]<0){
for(int k=-bombS[i];k<=bombS[i];k++){
image(imgBombBG,(bombA[i]+k)*80, (bombB[i])*80, 80, 80);
image(imgBombBG,(bombA[i])*80, (bombB[i]+k)*80, 80, 80);
grid[a][b]=0;
if(grid[a+1][b]!=0){grid[a+1][b]=0;}
if(a-1>=0){if(grid[a-1][b]!=0)grid[a-1][b]=0;}
if(grid[a][b+1]!=0){grid[a][b+1]=0;}
if(b-1>=0){if(grid[a][b-1]!=0)grid[a][b-1]=0;}
if(userA==bombA[i] && userB==bombB[i] || userA==bombA[i]+1 && userB==bombB[i] || userA==bombA[i]-1 && userB==bombB[i] || userA==bombA[i] && userB==bombB[i]+1 || userA==bombA[i] && userB==bombB[i]-1)
{boom=true;}
if(userC==bombA[i] && userD==bombB[i] || userC==bombA[i]+1 && userD==bombB[i] || userC==bombA[i]-1 && userD==bombB[i] || userC==bombA[i] && userD==bombB[i]+1 || userC==bombA[i] && userD==bombB[i]-1)
{boom=true;}
if(userA==bombA[i] && userB==bombB[i] || userA==bombA[i]+1 && userB==bombB[i] || userA==bombA[i]-1 && userB==bombB[i] || userA==bombA[i] && userB==bombB[i]+1 || userA==bombA[i] && userB==bombB[i]-1){ userA=-3; userB=-3;}
if(userC==bombA[i] && userD==bombB[i] || userC==bombA[i]+1 && userD==bombB[i] || userC==bombA[i]-1 && userD==bombB[i] || userC==bombA[i] && userD==bombB[i]+1 || userC==bombA[i] && userD==bombB[i]-1){ userC=-3; userD=-3;}
}
bombT[i]++;
}
}
for(int x=0;x<10;x++){
for(int y=0;y<8;y++){
if(grid[x][y]==2) image(imgRock,x*80, y*80, 80, 80);
}
}
if(boom){
textSize(100);
fill(#FF4800); text("GameOver", 150,200);
}
}
void drawOP(){
image(imgOPBG,0,0,width,height);
fill(#FF0000);
textSize(50); text("PRESS ENTER TO START",120,450);
}
byte [] data1 = new byte[3];
byte [] data2 = new byte[3];
byte oldButton1=1, oldButton2=1;
void getData(){
if(myPort1.available()>0)
{
myPort1.readBytes(data1);
if(data1[0]<30){
if(userA-1>=0 && grid[userA-1][userB]==0)
userA--;
}
if(data1[0]>100){
if(userA+1<=9 && grid[userA+1][userB]==0)
userA++;
}
if(data1[1]<30){
if(userB-1>=0 && grid[userA][userB-1]==0)
userB--;
}
if(data1[1]>100){
if(userB+1<=7 && grid[userA][userB+1]==0)
userB++;
}
if(data1[2]==0 && oldButton1==1 ){
putBomb1();
}
oldButton1=data1[2];
}
if(myPort2.available()>0)
{
println(data1);
myPort2.readBytes(data2);
if(data2[0]<30){
if(userC-1>=0 && grid[userC-1][userD]==0)
userC--;
}
if(data2[0]>100){
if(userC+1<=9 && grid[userC+1][userD]==0)
userC++;
}
if(data2[1]<30){
if(userD-1>=0 && grid[userC][userD-1]==0)
userD--;
}
if(data2[1]>100){
if(userD+1<=7 && grid[userC][userD+1]==0)
userD++;
}
if(data2[2]==0 && oldButton2==1){
putBomb2();
}
oldButton2=data2[2];
}
}
void putBomb1(){
bombA[bombN]=userA; bombB[bombN]=userB;
bombS[bombN]=1; bombT[bombN]=25;
bombN++;
}
void putBomb2(){
bombA[bombN]=userC; bombB[bombN]=userD;
bombS[bombN]=1; bombT[bombN]=25;
bombN++;
}
Arduino :
void setup()
{
Serial.begin(9600); // 設置串口波特率
pinMode(2, INPUT_PULLUP);
//digitalWrite(2,HIGH);
}
byte data[3];
void loop()
{
int valX = analogRead(A0);
int valY = analogRead(A1);// 在針腳2讀取的邏輯狀態的值
int valButton = digitalRead(2);// 向串口發送數據,以逗號分隔
data[0]=valX/8;
data[1]=valY/8;
data[2]=valButton;
Serial.write(data, 3);
delay(50);// 下一次測量之前稍微延遲
}
{
Serial.begin(9600); // 設置串口波特率
pinMode(2, INPUT_PULLUP);
//digitalWrite(2,HIGH);
}
byte data[3];
void loop()
{
int valX = analogRead(A0);
int valY = analogRead(A1);// 在針腳2讀取的邏輯狀態的值
int valButton = digitalRead(2);// 向串口發送數據,以逗號分隔
data[0]=valX/8;
data[1]=valY/8;
data[2]=valButton;
Serial.write(data, 3);
delay(50);// 下一次測量之前稍微延遲
}
week16_製作期末作品
🔺製作期末作品
這次結合了背景音樂,並用床墊剪成4個大小(上下左右),且兩邊都用鋁箔紙,用兩條線作感應
PImage imgleft,imgup,imgdown,imgright,imgdance;
PImage imgrightqq,imgleftqq,imgupqq,imgdownqq;
PImage []direction = new PImage[4];
float leftX=90,upX=230,downX=370,rightX=510;
float leftY=900,upY=900,downY=900,rightY=900;
float leftVY=6;
float upVY=5;
float downVY=4;
float rightVY=7;
import ddf.minim.*;
Minim minim;
AudioPlayer player1,player2,player3,player4,player5;
int score=0;
void setup(){
size(600,900);
background(255);
imgdance=loadImage("dance.jpg");
imgleft=loadImage("left.png");
imgup=loadImage("up.png");
imgdown=loadImage("down.png");
imgright=loadImage("right.png");
imgrightqq=loadImage("rightqq.png");
imgleftqq=loadImage("leftqq.png");
imgupqq=loadImage("upqq.png");
imgdownqq=loadImage("downqq.png");
imageMode(CENTER);
direction[0]=imgleft;
direction[1]=imgup;
direction[2]=imgdown;
direction[3]=imgright;
minim = new Minim(this);
player1 = minim.loadFile("BLACKPINK.mp3");
}
int choose=0;
void draw(){
player1.play();
image(imgdance,width/2,height/2,width,height);
image(imgleftqq,90,150,100,100);
image(imgupqq,230,150,100,100);
image(imgdownqq,370,150,100,100);
image(imgrightqq,510,150,100,100);
fill(#C75AF7);textSize(50);text("Score:"+score,30,80);
if(choose==1){
fill(#C75AF7);textSize(50);text("Great",400,80);
}else if(choose==2){
fill(#C75AF7);textSize(50);text("Good",400,80);
}else if(choose==3){
fill(#C75AF7);textSize(50);text("Cool",400,80);
}else if(choose==4){
fill(#C75AF7);textSize(50);text("Bad",400,80);
}else if(choose==5){
fill(#C75AF7);textSize(50);text("Miss",400,80);
}
if(leftY<0){
choose=5;
score-=4;
leftX=90;
leftY=900;
leftVY=random(4,7);
}else if(upY<0){
choose=5;
score-=4;
upX=230;
upY=900;
upVY=random(4,7);
}else if(downY<0){
choose=5;
score-=4;
downX=370;
downY=900;
downVY=random(4,7);
}else if(rightY<0){
choose=5;
score-=4;
rightX=510;
rightY=900;
rightVY=random(4,7);
}
leftY-=leftVY;
upY-=upVY;
downY-=downVY;
rightY-=rightVY;
image(imgleft,leftX,leftY,100,100);
image(imgup,upX,upY,100,100);
image(imgdown,downX,downY,100,100);
image(imgright,rightX,rightY,100,100);
}
void killleft(){
leftX=90;
leftY=900;
leftVY=random(4,7);
}
void killup(){
upX=230;
upY=900;
upVY=random(4,7);
}
void killdown(){
downX=370;
downY=900;
downVY=random(4,7);
}
void killright(){
rightX=510;
rightY=900;
rightVY=random(4,7);
}
void keyPressed(){
if(key=='1'){
if(dist(90,150,leftX,leftY)<10){
score+=5;
killleft();
choose=1;
}
else if(dist(90,150,leftX,leftY)<30){
score+=3;
killleft();
choose=2;
}
else if(dist(90,150,leftX,leftY)<60){
score-=1;
killleft();
choose=3;
}
else if(dist(90,150,leftX,leftY)<90){
score-=2;
killleft();
choose=4;
}else if(dist(90,150,leftX,leftY)<120){
score-=3;
killleft();
choose=5;
}
}
if(key=='2'){
if(dist(230,150,upX,upY)<10){
score+=5;
killup();
choose=1;
}
else if(dist(230,150,upX,upY)<30){
score+=3;
killup();
choose=2;
}
else if(dist(230,150,upX,upY)<60){
score-=1;
killup();
choose=3;
}
else if(dist(230,150,upX,upY)<90){
score-=2;
killup();
choose=4;
}else if(dist(230,150,upX,upY)<120){
score-=3;
killup();
choose=5;
}
}
if(key=='3'){
if(dist(370,150,downX,downY)<10){
score+=5;
killdown();
choose=1;
}
else if(dist(370,150,downX,downY)<30){
score+=3;
killdown();
choose=2;
}
else if(dist(370,150,downX,downY)<60){
score-=1;
killdown();
choose=3;
}
else if(dist(370,150,downX,downY)<90){
score-=2;
killdown();
choose=4;
}else if(dist(370,150,downX,downY)<120){
score-=3;
killdown();
choose=5;
}
}
if(key=='4'){
if(dist(510,150,rightX,rightY)<10){
score+=5;
killright();
choose=1;
}
else if(dist(510,150,rightX,rightY)<30){
score+=3;
killright();
choose=2;
}
else if(dist(510,150,rightX,rightY)<60){
score-=1;
killright();
choose=3;
}
else if(dist(510,150,rightX,rightY)<90){
score-=2;
killright();
choose=4;
}else if(dist(510,150,rightX,rightY)<120){
score-=3;
killright();
choose=5;
}
}
}
這次結合了背景音樂,並用床墊剪成4個大小(上下左右),且兩邊都用鋁箔紙,用兩條線作感應
PImage imgleft,imgup,imgdown,imgright,imgdance;
PImage imgrightqq,imgleftqq,imgupqq,imgdownqq;
PImage []direction = new PImage[4];
float leftX=90,upX=230,downX=370,rightX=510;
float leftY=900,upY=900,downY=900,rightY=900;
float leftVY=6;
float upVY=5;
float downVY=4;
float rightVY=7;
import ddf.minim.*;
Minim minim;
AudioPlayer player1,player2,player3,player4,player5;
int score=0;
void setup(){
size(600,900);
background(255);
imgdance=loadImage("dance.jpg");
imgleft=loadImage("left.png");
imgup=loadImage("up.png");
imgdown=loadImage("down.png");
imgright=loadImage("right.png");
imgrightqq=loadImage("rightqq.png");
imgleftqq=loadImage("leftqq.png");
imgupqq=loadImage("upqq.png");
imgdownqq=loadImage("downqq.png");
imageMode(CENTER);
direction[0]=imgleft;
direction[1]=imgup;
direction[2]=imgdown;
direction[3]=imgright;
minim = new Minim(this);
player1 = minim.loadFile("BLACKPINK.mp3");
}
int choose=0;
void draw(){
player1.play();
image(imgdance,width/2,height/2,width,height);
image(imgleftqq,90,150,100,100);
image(imgupqq,230,150,100,100);
image(imgdownqq,370,150,100,100);
image(imgrightqq,510,150,100,100);
fill(#C75AF7);textSize(50);text("Score:"+score,30,80);
if(choose==1){
fill(#C75AF7);textSize(50);text("Great",400,80);
}else if(choose==2){
fill(#C75AF7);textSize(50);text("Good",400,80);
}else if(choose==3){
fill(#C75AF7);textSize(50);text("Cool",400,80);
}else if(choose==4){
fill(#C75AF7);textSize(50);text("Bad",400,80);
}else if(choose==5){
fill(#C75AF7);textSize(50);text("Miss",400,80);
}
if(leftY<0){
choose=5;
score-=4;
leftX=90;
leftY=900;
leftVY=random(4,7);
}else if(upY<0){
choose=5;
score-=4;
upX=230;
upY=900;
upVY=random(4,7);
}else if(downY<0){
choose=5;
score-=4;
downX=370;
downY=900;
downVY=random(4,7);
}else if(rightY<0){
choose=5;
score-=4;
rightX=510;
rightY=900;
rightVY=random(4,7);
}
leftY-=leftVY;
upY-=upVY;
downY-=downVY;
rightY-=rightVY;
image(imgleft,leftX,leftY,100,100);
image(imgup,upX,upY,100,100);
image(imgdown,downX,downY,100,100);
image(imgright,rightX,rightY,100,100);
}
void killleft(){
leftX=90;
leftY=900;
leftVY=random(4,7);
}
void killup(){
upX=230;
upY=900;
upVY=random(4,7);
}
void killdown(){
downX=370;
downY=900;
downVY=random(4,7);
}
void killright(){
rightX=510;
rightY=900;
rightVY=random(4,7);
}
void keyPressed(){
if(key=='1'){
if(dist(90,150,leftX,leftY)<10){
score+=5;
killleft();
choose=1;
}
else if(dist(90,150,leftX,leftY)<30){
score+=3;
killleft();
choose=2;
}
else if(dist(90,150,leftX,leftY)<60){
score-=1;
killleft();
choose=3;
}
else if(dist(90,150,leftX,leftY)<90){
score-=2;
killleft();
choose=4;
}else if(dist(90,150,leftX,leftY)<120){
score-=3;
killleft();
choose=5;
}
}
if(key=='2'){
if(dist(230,150,upX,upY)<10){
score+=5;
killup();
choose=1;
}
else if(dist(230,150,upX,upY)<30){
score+=3;
killup();
choose=2;
}
else if(dist(230,150,upX,upY)<60){
score-=1;
killup();
choose=3;
}
else if(dist(230,150,upX,upY)<90){
score-=2;
killup();
choose=4;
}else if(dist(230,150,upX,upY)<120){
score-=3;
killup();
choose=5;
}
}
if(key=='3'){
if(dist(370,150,downX,downY)<10){
score+=5;
killdown();
choose=1;
}
else if(dist(370,150,downX,downY)<30){
score+=3;
killdown();
choose=2;
}
else if(dist(370,150,downX,downY)<60){
score-=1;
killdown();
choose=3;
}
else if(dist(370,150,downX,downY)<90){
score-=2;
killdown();
choose=4;
}else if(dist(370,150,downX,downY)<120){
score-=3;
killdown();
choose=5;
}
}
if(key=='4'){
if(dist(510,150,rightX,rightY)<10){
score+=5;
killright();
choose=1;
}
else if(dist(510,150,rightX,rightY)<30){
score+=3;
killright();
choose=2;
}
else if(dist(510,150,rightX,rightY)<60){
score-=1;
killright();
choose=3;
}
else if(dist(510,150,rightX,rightY)<90){
score-=2;
killright();
choose=4;
}else if(dist(510,150,rightX,rightY)<120){
score-=3;
killright();
choose=5;
}
}
}
訂閱:
文章 (Atom)