期末報告
主題:鋼鋼好朋友
介紹:鋼鐵超人要利用手上的武器診拯救好朋友。
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();
}
沒有留言:
張貼留言