MBED GAME PROJECT: SPACE MISSION (PROCESSING CODE)
Page last updated 27 Oct 2013, by
0
replies
processing
.
PROCESSING LANGUAGE CODE
//library for adding sound effect import ddf.minim.spi.*; import ddf.minim.signals.*; import ddf.minim.*; import ddf.minim.analysis.*; import ddf.minim.ugens.*; import ddf.minim.effects.*; Minim intro; //creating object from Minim class AudioPlayer player; import processing.serial.*; // library for serial communication with arm //creating images and fonts objects PImage img; PImage gun1; PImage astd; PImage gun; PFont font; PFont font1; PFont font2; PFont font3; String name1= ""; int scr1=0; String data1=""; String name=""; int scr=700; String combo=""; int shoot=0; int index1=0; int index2=0; int index3=0; int cont=1; int jump=0; Serial port; // Create object from Serial class for player1 Serial port1; // Create object from Serial class for player 2 int index4=0; float val1=0; int shoot1=0; String data2=""; float val=0; String typing=""; //typing name String saved=""; //saved name int score; int astdSize = 60; boolean fire = false; boolean fire1 = false; int energy=100; boolean show=false; //Initialise gameOver variable int gameOver = 0; String tos; // String in form of Name-score to send to arm for saving int pos=100; int getRandomX() // to generate random no. to control x-coordinate of astroids { return int(random(800)); } // generate the 8 random x-coordinates for 8 astroids int[] astdx={ getRandomX(), getRandomX(), getRandomX(), getRandomX(), getRandomX(), getRandomX(), getRandomX(), getRandomX() }; int[] astdy = { 0, 0, 0, 0, 0 ,0 ,0 , 0}; //all y-coordinates 0 initially void setup() { size (900, 600); smooth (); intro = new Minim(this); player = intro.loadFile("marcus_kellis_theme.mp3"); //load audio file // play the audio file player.play(); port = new Serial(this,"COM17",9600); // serial port for player1 port.bufferUntil('\n'); //reading data port1 = new Serial(this,"COM18",9600); // serial port for player2 port1.bufferUntil('\n'); //reading data vx(); // to check if x coordinate of aestroid is reachable. //load images and fonts img = loadImage("universe.jpg"); astd=loadImage("astd.png"); gun = loadImage("gun.png"); gun1 = loadImage("gun1.png"); font = loadFont("Algerian-48.vlw"); textFont(font); font1=loadFont("Astonished-60.vlw"); font2=loadFont("28_Days_Later-48.vlw"); font3=loadFont("ArialRoundedMTBold-48.vlw"); frameRate(30); //frames per second is 30 } void draw() { // save a copy of score in a text file String[] line = loadStrings("score.txt"); int part=line[0].indexOf("-"); name=line[0].substring(0,part); scr=int(line[0].substring(part+1,line[0].length())); image(img,0,0); //screen design if (show ==false) { fill(255,0,0); textFont(font2); text("WELCOME TO THE SPACE MISSION",pos,100); fill(192,197,198); textFont(font3); textSize(30); text("Make a TEAM of Two players and shoot the Aestroids\nSAVE THE EARTH...BEST OF LUCK!!!",pos,200); textSize(60); textFont(font); fill(245,119,203); text("Enter your TEAM name:", pos, 350); fill(241,252,0); text(typing,pos+575,350); textFont(font3); fill(222,201,43); textSize(30); text("INSTRUCTIONS:\nFor Each Bullet you lose energy by 1\nFor each correct shot you gain energy by 5\n"+"HIGHEST SCORE ========> "+scr+ " by "+ name,pos,450); } else { fill(255); stroke (255); fill(255); textFont(font3); text("SCORE: "+score, 20,40); //show score if (energy<50) { fill(255,0,0); } text("ENERGY: "+energy, 550,40); //show energy image(gun1, val1, 550); //loading gun image //energy should be greater than 0 to shoot if (energy>0) { if (shoot==1) { fire=true; } if (shoot1==1) { fire1=true; } } //energy can't increase 200 if (energy>200) { energy=200; } //enegy can't decrease 0 if (energy<0) { energy=0; } if(fire) //player1 { cannon(int(val+40)); //shoot energy--; //energy decrease fire = false; } if(fire1) //player2 { cannon1(int(val1+40)); //shoot energy--; //energy decrease fire1 = false; } astdFalling(); gameFinish(); } } void astdFalling() // to increase y-coordinate of asteroids { for (int i=0; i<8; i++) { image(astd,astdx[i], astdy[i]++); } } void cannon(int shotX) //bullet from gun for player1 { boolean strike = false; for (int i = 0; i < 8; i++) { if((shotX >= astdx[i]) && (shotX <= (astdx[i]+astdSize))) { strike = true; line(val+40, 565, val+40, astdy[i]); ellipse(astdx[i], astdy[i], astdSize+25, astdSize+25); astdx[i] = getRandomX(); vx(); astdy[i] = 0; // update score score++; energy=energy+5; } } if(strike == false) { line(val+40, 565, val+40, 0); } } void cannon1(int shotX) //bullet from gun for player2 { boolean strike = false; for (int i = 0; i < 8; i++) { if((shotX >= astdx[i]) && (shotX <= (astdx[i]+astdSize))) { strike = true; fill(238,252,41); line(val1+40, 565, val1+40, astdy[i]); ellipse(astdx[i], astdy[i], astdSize+25, astdSize+25); astdx[i] = getRandomX(); vx(); astdy[i] = 0; fill(255,255,255); // update score score++; energy=energy+10; // correct shot will increase energy } } if(strike == false) { line(val1+40, 565, val1+40, 0); } } void gameFinish() //GameOver { for (int i=0; i< 8; i++) { if(astdy[i]==height) { textFont(font); fill(color(255,255,255)); textSize(30); textAlign(CENTER); text("GAME OVER", width/2, height/2); text("You scored : "+ score, width/2, height/2 + 50); if (score>=scr) { text("Congrats "+ saved + "! for HIGHEST SCORE", width/2, height/2 + 100); tos=saved+"-"+score; String[] name_score = {tos}; saveStrings("score.txt",name_score); port1.write(tos); } else { text("Sorry! "+ saved + " You could not SCORE HIGHEST : ", width/2, height/2 + 100); text("HIGHEST SCORE : "+scr+ " by " + name,width/2, height/2 + 150); } noLoop(); // no repeat } } } void player(Serial port) //serial communication with arm for player 1 { data1=port.readStringUntil('\n'); //string in form of acclerometer_data#button_value if (data1!=null) { data1=data1.substring(0,data1.length()-1); index2=data1.indexOf("#"); //position of # if (index2>=2) { val=float(data1.substring(0,index2)); //accelerometer data shoot=int(data1.substring(index2+1,data1.length())); //button value val=constrain(val,250,700); //constraining the acclerometer data val=map(val,250,700,0,900); //mapping the data with width of screen } } } void serialEvent(Serial port1) // serial communication with arm for player 2 { data2=port1.readStringUntil('\n'); //string in form of acclerometer_data#button_value if (data2!=null) { data2=data2.substring(0,data2.length()-1); index4=data2.indexOf("#"); //position of # if (index4>=2) { val1=float(data2.substring(0,index4)); //accelerometer data shoot1=int(data2.substring(index4+1,data2.length())); //button value val1=constrain(val1,250,700); //constraining the acclerometer data val1=map(val1,250,700,0,900); //mapping the data with width of screen } } } void vx() // for putting the x-coordinate of asteroid to reachable position { for (int i=0;i<8;i++) { if (astdx[i]<50) { astdx[i]=55; } } } void keyPressed() // for input name { if (show==false) { // If the return key is pressed, save the String and clear it if (key == '\n' ) { saved = typing; // A String can be cleared by setting it equal to "" typing = ""; show=!false; if (saved=="") saved="noName"; println(saved); } else { // Otherwise, concatenate the String // Each character typed by the user is added to the end of the String variable. typing = typing + key; } } }
Please log in to post comments.