2014年1月12日 星期日

第十九週期末報告

期末報告

主題:鋼鋼好朋友
介紹:鋼鐵超人要利用手上的武器診拯救好朋友。
Arduino程式碼:
int switchStateRed = 0; int switchStateBlue = 0; int switchStateB = 0; int switchStateW = 0; int switchStateA = 0; const int ledPin = 13; // led connected to digital pin 13 const int knockSensor = A0; // the piezo is connected to analog pin 0 const int threshold = 100; int sensorReading = 0; // variable to store the value read from the sensor pin int ledState = LOW; void setup(){ pinMode(ledPin, OUTPUT); pinMode(2,INPUT); pinMode(3,INPUT); pinMode(4,INPUT); pinMode(5,INPUT); pinMode(6,INPUT); Serial.begin(9600); } //int a=0,b=0; void loop(){ sensorReading = analogRead(knockSensor); switchStateRed = digitalRead(2); switchStateBlue = digitalRead(3); switchStateW = digitalRead(4); switchStateA = digitalRead(5); switchStateB = digitalRead(6); // if the sensor reading is greater than the threshold: if (sensorReading >= threshold) { // toggle the status of the ledPin: ledState = !ledState; // update the LED pin itself: digitalWrite(ledPin, ledState); // send the string "Knock!" back to the computer, followed by newline } if(switchStateRed == HIGH) {Serial.write('1');} if(switchStateBlue == HIGH) {Serial.write('2');} if(switchStateW == HIGH) {Serial.write('3');} if(switchStateA == HIGH) {Serial.write('4');} if(switchStateB == HIGH) {Serial.write('5');} delay(33); }
Processing程式碼:
PImage img; PImage img1; PImage img2; PImage img3; PImage img4; PImage img5; PImage img6; PImage img7; PImage img8; PImage img9; PImage img0; PImage img10; PImage img11; PImage img12; PImage img13; PImage img14; PImage img15; PImage img16; import processing.serial.*;// Serial serial;// import ddf.minim.*; AudioPlayer player; AudioPlayer player1; AudioPlayer player2; AudioPlayer player3; AudioPlayer player4; AudioPlayer player5; Minim minim;//audio context char c=' '; float z; int ss; int btime; int [] start = new int[50]; float [] bulletX=new float[50]; float [] bulletY=new float[50]; int [] mstart = new int[50]; float [] monsterX=new float[50]; float [] monsterY=new float[50]; int bo; int top=0; int i; int a; int b; int m=0; int s; int ba; int bc; int hl; int ml; int f; float bl; int ud; int bossY; float []thingAA = new float[50]; float mt; float md; void setup() { mt=150; size(1000, 300); btime=1800; ss=0; i=0; a=0; b=0; s=0; ba=0; bo=15; bc=100; f=0; z=15; img = loadImage("01.png"); img1 = loadImage("pic4.bmp"); img2 = loadImage("dragon.png"); img3 = loadImage("a.png"); img4 = loadImage("b.png"); img5 = loadImage("c.png"); img6 = loadImage("d.png"); img7 = loadImage("e.png"); img8 = loadImage("f.png"); img9 = loadImage("g.png"); img0 = loadImage("h.png"); img10 = loadImage("02.png"); img11 = loadImage("blood.png"); img12 = loadImage("magic.png"); img13 = loadImage("1.png"); img14 = loadImage("blood2.png"); img15 = loadImage("win.jpg"); img16 = loadImage("lose.jpg"); m=0; bl=600; bossY=int(random(85, 185)); imageMode(CENTER); hl=400; ml=0; minim = new Minim(this); player = minim.loadFile("file.mp3", 2048); player1 = minim.loadFile("01.wav", 2048); player2 = minim.loadFile("02.wav", 2048); player3 = minim.loadFile("03.wav", 2048); player4 = minim.loadFile("winner.wav", 2048); player5 = minim.loadFile("loser.WAV", 2048); serial=new Serial(this, "COM3", 9600); player.play(); } void draw() { if (serial.available()>0) { c=(char)serial.read(); if (c=='1')mt=mt+10; if (c=='2')mt=mt-10; if (c == '3') { if (bc==100) { if (bo!=0) { bulletX[top]=120; bulletY[top]=mt-25; start[top]=1; top++; if (top>=50) top=0; bo--; player1 = minim.loadFile("01.wav"); player1.play(); } } z--; } if (c == '4') { ba=1; z=0; } if (c=='5') if (a==0&&ml==300) { a=1; } } if (ss==0) { background(img1); image(img, 70, mt, 63, 80); image(img11, 0, 0, hl, 30); image(img12, 0, 25, ml, 15); if (a==0)i=0; if (a==1&&i<=60) { i=i+1; } if (a==1&&i==61) i=31; if (a==2&&i<=160) i=i+1; if (i>0&&i<=30) { image(img3, 1600, mt, 3000, 100); player3 = minim.loadFile("03.wav"); player3.play(); } if (i>30&&i<=40) { image(img4, 1600, mt, 3000, 100); } if (i>40&&i<=50) { image(img5, 1600, mt, 3000, 100); } if (i>50&&i<=60) { image(img6, 1600, mt, 3000, 100); } if (i>60&&i<=100) { image(img7, 1600, mt, 3000, 100); } if (i>100&&i<=120) { image(img0, 1600, mt, 3000, 100); } if (i>120&&i<=140) { image(img8, 1600, mt, 3000, 100); } if (i>140&&i<=160) { image(img9, 1600, mt, 3000, 100); } if (a==1&&ml>0) ml=ml-2; if (btime>0)s=int(random(0, 15)); else { s=int(random(0,10)); } if ( s == 5) { monsterX[m]=900; monsterY[m]=random(50, 950); mstart[m]=1; m++; if (m>=50)m=0; } for (int i=0;i<50;i++) { if (mstart[i]==1) { image(img2, monsterX[i], monsterY[i], 64, 64); monsterX[i]-=3; if (monsterY[i]>500) { monsterY[i]=0; mstart[i]=0; } } } for (int i=0;i<50;i++) { if (start[i]==1) { image(img10, bulletX[i], bulletY[i]+30, 30, 10); bulletX[i]+=3; if (bulletY[i]>500) { bulletY[i]=0; start[i]=0; } } } for (int k=0;k<50;k++) for (int j=0;j<50;j++) { if (monsterY[j]<=bulletY[k]+50 && monsterY[j]>=bulletY[k]-50) if (monsterX[j]<=bulletX[k]+10&& monsterX[j]>=bulletX[k]-10 && mstart[j]==1) { start[k]=0; mstart[j]=0; monsterY[j]=0; bulletY[k]=0; if (ml<300) ml=ml+10; } if (btime<=0) { if (bossY<=bulletY[k]+85 && bossY >=bulletY[k]-85) if (800<=bulletX[k]+10&& 800>=bulletX[k]-10) { start[k]=0; bl=bl-0.0025; } } } for (int k=0;k<50;k++) { if (a==1) { if (monsterY[k]<= mt +50&&monsterY[k]>= mt-50) { mstart[k]=0; monsterY[k]=0; } if (bossY <= mt+150&&bossY>= mt-150) bl=bl-0.025; } } if (ba==1) { if (bc!=0) { bc--; } else { bo=15; bc=100; ba=0; } if (z<15) { z=z+0.15; } } if (a==1&&ml==0) { a=0; } for (int j=0;j<50;j++) if (monsterY[j]<=mt+50 && monsterY[j]>=mt-50) if (monsterX[j]<=70+10 && mstart[j]==1) { hl=hl-50; mstart[j]=0; } for (int i=0;i<=z;i++) image(img13, 940, 10+i*10, 30, 10); if (z>15) z=15; if (btime>0) btime--; if (btime==0) { image(img14, 980, 300, 20, bl); image(img2, 800, bossY, 240, 240); if (bossY<=185&&bossY>=85) { if (ud==0)bossY++; if (ud==1)bossY--; if (bossY>=185)ud=1; if (bossY<=85)ud=0; } else { if (bossY==84) bossY=85; if (bossY==186) bossY=185; } } if (bl<=0) { ss=1; player4 = minim.loadFile("winner.wav"); player4.play(); } if (hl<=0) { ss=2; player5 = minim.loadFile("loser.WAV"); player5.play(); } } if (ss==1) image(img15,500,150,1000,300); if (ss==2) image(img16,500,150,1000,300); } void keyPressed() { if (key=='q') ml=300; if (key == 'p') btime=0; if (key == 'o') bl=0; } void stop() { player.close(); minim.stop(); super.stop(); }





沒有留言:

張貼留言