processing 游戏编程实例
2017-02-03 19:08
393 查看
游戏描述
1.通过键盘控制界面的切换,部分游戏需要辅助鼠标。
2。创设欢迎界面,规则界面,模拟菜单
3。创设辅助界面
4。三个游戏分别为
1.模拟弹簧,使用鼠标进行操作,并加入旋转效果
2.无先前实例无法描述
3.模仿一般类射击游戏
5。缺陷:画质,游戏前需要一些辅助说明,经过他人试玩,部分游戏上手较慢。
1.通过键盘控制界面的切换,部分游戏需要辅助鼠标。
2。创设欢迎界面,规则界面,模拟菜单
3。创设辅助界面
4。三个游戏分别为
1.模拟弹簧,使用鼠标进行操作,并加入旋转效果
2.无先前实例无法描述
3.模仿一般类射击游戏
5。缺陷:画质,游戏前需要一些辅助说明,经过他人试玩,部分游戏上手较慢。
import ddf.minim.spi.*; import ddf.minim.signals.*; import ddf.minim.*; import ddf.minim.analysis.*; import ddf.minim.ugens.*; import ddf.minim.effects.*; import processing.dxf.*; static int premode; static float headX=0.2*1024,headY=0.7*620; static int score=0; static float boxX=0,boxY=0; static int flag=0; static int finalscore; float volume=10; int ass=0; PVector vol=new PVector (0,0); float time=0.001; static int manX=500,manY=590; PVector[] vball={new PVector(0,0),new PVector(0,0),new PVector(0,0),new PVector(0,0),new PVector(0,0),new PVector(0,0),new PVector(0,0),new PVector(0,0),new PVector(0,0),new PVector(0,0)}; PVector[] position ={new PVector(0,0),new PVector(0,0),new PVector(0,0),new PVector(0,0),new PVector(0,0),new PVector(0,0),new PVector(0,0),new PVector(0,0),new PVector(0,0),new PVector(0,0)}; PVector vman=new PVector(0,0); PVector g = new PVector(0,9.8); float vo=0; float time_2=0.01; int life=0; float ti=0; float volu=0; static int order=0; PFont f; int xleft=8; int xbull=10; int mode=0; static int dur=0; int xflag=1; float xt=0; PVector []xpos={new PVector(0,0),new PVector(0,0),new PVector(0,0),new PVector(0,0),new PVector(0,0),new PVector(0,0),new PVector(0,0),new PVector(0,0)}; PVector xv=new PVector(0,0); //Minim minim; AudioPlayer player; Minim minim;//audio context int loopcount; void setup() { size(1024,620); minim = new Minim(this); player = minim.loadFile("fc.mp3", 2048); player.play(); // minim = new Minim(this); // bellSound = minim.loadSnippet("sj.mp3"); //bellSound.play(); f=loadFont("C.vlw"); int index=0; for(index=0;index<8;index++) { xpos[index].x=random(900); xpos[index].y=random(550); } for(index=0;index<10;index++) { vball[index].x=random(100); vball[index].y=random(100); position[index].x=random(1000); position[index].y=random(600); } } void draw(){ if(mode==0){ //background(#42f4d1); PImage img = loadImage("bg.jpg"); image(img,0,0); textAlign(CENTER); fill(#f46242); textFont(f); text("the game begin",0.5*width,0.5*height); text("to continue please press C",0.5*width,0.7*height); } if (mode==1){ background(#42f4d4); textFont(f); textAlign(CENTER); text("the rule",0.5*width,0.1*height); text("1.press character c to continue",0.5*width,0.2*height); text("2.press character b to stop",0.5*width,0.3*height); text("3,press character n to begin the new game",0.5*width,0.4*height); text("4,press character j to begin the check",0.5*width,0.5*height); text("4,press character wasd to control",0.5*width,0.6*height); text("enjoy yourself and have fun ",0.5*width,0.7*height); } if(mode==2 ){ PImage img = loadImage("283114.jpg"); image(img,-100,-40); textFont(f); textAlign(CENTER); text("##the ball",0.5*width,0.3*height); text("the bat",0.5*width,0.5*height); text("the mul",0.5*width,0.7*height); } if(mode==3 ){ PImage img = loadImage("283114.jpg"); image(img,-100,-40); textFont(f); textAlign(CENTER); text("the ball",0.5*width,0.3*height); text("##the bat",0.5*width,0.5*height); text("the mul",0.5*width,0.7*height); } if(mode==4 ){ PImage img = loadImage("283114.jpg"); image(img,-100,-40); textFont(f); textAlign(CENTER); text("the ball",0.5*width,0.3*height); text("the bat",0.5*width,0.5*height); text("##the mul",0.5*width,0.7*height); } if(mode==100){ background(#4250f4); PImage img1 = loadImage("road.jpg"); image(img1,5,-20); textAlign(CENTER); textFont(f); text("have a rest",0.5*width,0.9*height); } if(mode==10){ premode=mode; ti+=0.01; background(0); textSize(49); fill(#F0F8FF); text("the ball",0.5*width,0.05*height); text("score: "+score,0.1*width,0.1*height); text("the control",0.1*width,0.2*height); ellipse(headX,headY,50,50); stroke(#F0F8FF); //line(headX,headY,mouseX,mouseY); if (ass==0&&mousePressed){ ass=1; stroke(#F0F8FF); line(headX,headY,mouseX,mouseY); vol.x=(mouseX-headX)*100; vol.y=(mouseY-headY)*100; noStroke(); headX+=time*vol.x*0.000000001; headY+=time*vol.y*0.000000001; } if(ass==0){ stroke(#F0F8FF); line(headX,headY,mouseX,mouseY); } else{ text("time: "+ti,0.2*width,0.5*height); vol.x+=g.x*time*100; vol.y+=g.y*time*100; if(headX<=10) {vol.x*=-1; headX=20;} if(headX>=1010) {vol.x*=-1; headX=1000;} if(headY<=10) {vol.y*=-1; headY=20;} if(headY>=610) {vol.y*=-1;headY=600;} headX+=time*vol.x; headY+=time*vol.y; if(flag==0){ flag=1; boxX=random(1024); boxY=random(620); fill(#F0F8FF); ellipse(boxX,boxY,< 17adc span class="hljs-number">20,20); } else{ fill(#F0F8FF); ellipse(boxX,boxY,20,20); float x=headX-boxX,y=headY-boxY; if(x<20&&x>-20&&y<20&&y>-20) { flag=0; float index=0; for(index=0;index<100;index++) { float alpha=2*PI*index / 20.0; stroke(#F0F8FF); line(boxX,boxY,boxX+20*cos(alpha),boxY+20*sin(alpha)); } boxX=random(1024); boxY=random(620); score++; } } fill(#F0F8FF); text("the speed in x: "+vol.x,0.2*width,0.3*height); text("the speed in y: "+vol.y,0.2*width,0.4*height); ellipse(headX,headY,50,50); noStroke(); if(headX==0) vol.x*=-1; if(mousePressed) { stroke(#F0F8FF); line(headX,headY,mouseX,mouseY); vol.x+=(mouseX-headX)*10; vol.y+=(mouseY-headY)*10; } } //if(score>=2) mode=11; } if(mode==11){ premode=mode; ti+=0.01; background(0); textSize(49); fill(#F0F8FF); text("the ball",0.5*width,0.05*height); text("score: "+score,0.1*width,0.1*height); text("the control",0.1*width,0.2*height); ellipse(headX,headY,50,50); stroke(#F0F8FF); //line(headX,headY,mouseX,mouseY); if (ass==0&&mousePressed){ ass=1; stroke(#F0F8FF); line(headX,headY,mouseX,mouseY); vol.x=(mouseX-headX)*100; vol.y=(mouseY-headY)*100; noStroke(); headX+=time*vol.x*0.000000001; headY+=time*vol.y*0.000000001; } if(ass==0){ stroke(#F0F8FF); line(headX,headY,mouseX,mouseY); } else{ text("time: "+ti,0.2*width,0.5*height); vol.x+=g.x*time*100; vol.y+=g.y*time*100; if(headX<=10) {vol.x*=-1; headX=20;} if(headX>=1010) {vol.x*=-1; headX=1000;} if(headY<=10) {vol.y*=-1; headY=20;} if(headY>=610) {vol.y*=-1;headY=600;} headX+=time*vol.x; headY+=time*vol.y; if(flag==0){ flag=1; boxX=random(1024); boxY=random(620); fill(#F0F8FF); ellipse(boxX,boxY,20,20); } else{ fill(#F0F8FF); ellipse(boxX,boxY,20,20); float x=headX-boxX,y=headY-boxY; if(x<20&&x>-20&&y<20&&y>-20) { flag=0; float index=0; for(index=0;index<100;index++) { float alpha=2*PI*index / 20.0; stroke(#F0F8FF); line(boxX,boxY,boxX+20*cos(alpha),boxY+20*sin(alpha)); } boxX=random(1024); boxY=random(620); score++; } } fill(#F0F8FF); text("the speed in x: "+vol.x,0.2*width,0.3*height); text("the speed in y: "+vol.y,0.2*width,0.4*height); ellipse(headX,headY,50,50); noStroke(); if(headX==0) vol.x*=-1; if(mousePressed) { stroke(#F0F8FF); line(headX,headY,mouseX,mouseY); vol.x+=(mouseX-headX)*10; vol.y+=(mouseY-headY)*10; } } if(ti>=10) mode=13; } if(mode==12){ premode=mode; ti+=0.01; background(0); textSize(49); fill(#F0F8FF); text("the ball",0.5*width,0.05*height); text("score: "+score,0.1*width,0.1*height); text("the control",0.1*width,0.2*height); ellipse(headX,headY,50,50); stroke(#F0F8FF); //line(headX,headY,mouseX,mouseY); if (ass==0&&mousePressed){ ass=1; stroke(#F0F8FF); line(headX,headY,mouseX,mouseY); vol.x=(mouseX-headX)*100; vol.y=(mouseY-headY)*100; noStroke(); headX+=time*vol.x*0.000000001; headY+=time*vol.y*0.000000001; } if(ass==0){ stroke(#F0F8FF); line(headX,headY,mouseX,mouseY); } else{ text("time: "+ti,0.2*width,0.5*height); vol.x+=g.x*time*100; vol.y+=g.y*time*100; if(headX<=10) {vol.x*=-1; headX=20;} if(headX>=1010) {vol.x*=-1; headX=1000;} if(headY<=10) {vol.y*=-1; headY=20;} if(headY>=610) {vol.y*=-1;headY=600;} headX+=time*vol.x; headY+=time*vol.y; if(flag==0){ flag=1; boxX=random(1024); boxY=random(620); fill(#F0F8FF); ellipse(boxX,boxY,20,20); } else{ fill(#F0F8FF); ellipse(boxX,boxY,20,20); float x=headX-boxX,y=headY-boxY; if(x<20&&x>-20&&y<20&&y>-20) { flag=0; float index=0; for(index=0;index<100;index++) { float alpha=2*PI*index / 20.0; stroke(#F0F8FF); line(boxX,boxY,boxX+20*cos(alpha),boxY+20*sin(alpha)); } boxX=random(1024); boxY=random(620); score++; } } fill(#F0F8FF); text("the speed in x: "+vol.x,0.2*width,0.3*height); text("the speed in y: "+vol.y,0.2*width,0.4*height); ellipse(headX,headY,50,50); noStroke(); if(headX==0) vol.x*=-1; if(mousePressed) { stroke(#F0F8FF); line(headX,headY,mouseX,mouseY); vol.x+=(mouseX-headX)*10; vol.y+=(mouseY-headY)*10; } } if(score>=20) mode=13; } if(mode==14){ premode=mode; ti=0; score=0; background(0); textSize(49); fill(#F0F8FF); textAlign(CENTER); text("again press n",0.5*width,0.4*height); } if(mode==13) { premode=mode; background(0); textSize(49); fill(#F0F8FF); textAlign(CENTER); finalscore+=score; text("congratulation",0.5*width,0.4*height); text("with time "+ti+"s",0.5*width,0.5*height); text("with score "+score+"s",0.5*width,0.6*height); text("to continue press c",0.5*width,0.7*height); noStroke(); // mode=14; } if(mode==7 ){ premode=mode; PImage img = loadImage("283114.jpg"); image(img,-100,-40); textFont(f); textAlign(CENTER); fill(#FFF8DC); stroke(#FFF8DC); text("##free play",0.5*width,0.3*height); text("time limit",0.5*width,0.5*height); text("ball limte",0.5*width,0.7*height); } if(mode==8 ){ premode=mode; PImage img = loadImage("283114.jpg"); image(img,-100,-40); //textFont(f); textAlign(CENTER); fill(#FFF8DC); stroke(#FFF8DC); text("free play",0.5*width,0.3*height); text("##time limit",0.5*width,0.5*height); text("ball limte",0.5*width,0.7*height); } if(mode==9 ){ premode=mode; PImage img = loadImage("283114.jpg"); image(img,-100,-40); //textFont(f); textAlign(CENTER); fill(#FFF8DC); stroke(#FFF8DC); text("free play",0.5*width,0.3*height); text("time limit",0.5*width,0.5*height); text("##ball limte",0.5*width,0.7*height); } if(mode==20){ premode=mode; ti+=0.01; if (life==0){ vo+=0.01; background(0); fill(#FFFFF0); stroke(#FFFFF0); ellipse(manX,manY,30,30); textAlign(CENTER); textFont(f); fill(#FFFFF0); text(vo,0.5*width,0.3*height); int index=0; for(index=0;index<10;index++) {ellipse(position[index].x,position[index].y,20,20); position[index].x+=vball[index].x*time_2; position[index].y+=vball[index].y*time_2; textFont(f); textAlign(CENTER); text("time: "+ti,0.1*width,0.1*height); } noStroke(); for(index=0;index<10;index++){ if(position[index].x<=10) position[index].x=900; else if (position[index].x>=900) position[index].x=10; if(position[index].y<=10) position[index].y=600; else if(position[index].y>=600) position[index].y=10; } if(manY<=600){ vman.y+=0.5*9.8*time_2*10; manX+=vman.x*time_2*10; manY+=vman.y*time_2*10; } if(manX<=10) manX=900; else if (manX>=900) manX=10; if(manY<=10) manY=600; else if(manY>=600) manY=10; index=0; for(index=0;index<10;index++) { float dist=sqrt((position[index].x-manX)*(position[index].x-manX)+(position[index].y-manY)*(position[index].y-manY)); if(dist<=20) life=1; } } else { mode=23; } if(order<=2) volu+=1; //background(0); fill(#FFFFF0); rect(900,100,0.1*width,0.05*height); int index=0; if(order==0){ fill(#00FF00); stroke(#00FF00); rect(900,100,volu,0.05*height); } if(order==1){ fill(#FFFF00); stroke(#FFFF00); rect(900,100,volu,0.05*height); } if(order==2){ fill(#DEB887); stroke(#DEB887); rect(900,100,volu,0.05*height); } if(order==3){ volu=0.1*width; fill(#DEB887); stroke(#DEB887); rect(900,100,volu,0.05*height); } if(volu>=0.1*width&&order<=2) {if(order<=3) volu=0; order++; } } if(mode==23){ premode=mode; textFont(f); background(0); textAlign(CENTER);; finalscore+=ti/10; text("the time you have expericened: "+ti,0.5*width,0.5*height); } xt+=0.01; //ellipse(50,585,100,100); if(mode==27){ premode=mode; background(0); stroke(#FFFFF0); fill(#FFFFF0); line(50,0,50,550); line(50,550,1024,550); fill(#FFFFF0); //ellipse(50,585,100,100); stroke(#FFFFF0); line(40,570,10,540); line(40,570,90,570); line(10,540,mouseX,mouseY); line(90,570,mouseX,mouseY); fill(0); ellipse(mouseX,mouseY,20,20); line(40,570,40,620); textFont(f); textAlign(CENTER); stroke(#FFFFF0); fill(#FFFFF0); text("the bullet left: "+xbull,590,590); text("time: "+xt,850,590); xv.x=(40-mouseX)*2.5; xv.y=-(570-mouseY)*2.5; int index=0; PVector Xpoint=new PVector(mouseX,mouseY); float ptime=0.1; while(index < 1000){ stroke(#FFFFF0); fill(#FFFFF0); point(mouseX+xv.x*ptime*index,mouseY-xv.y*ptime*index+0.5*9.8*ptime*ptime*index*index); index++; } if(mousePressed) mode=28; stroke(#FFFFF0); text(Xpoint.x,590,410); index=0; for(index=0;index<8;index++){ stroke(#FFFFF0);; fill(#FFFFF0); ellipse(xpos[index].x+124,xpos[index].y,20,20); xflag=0; } } if(mode==28){ premode=mode; background(0); stroke(#FFFFF0); fill(#FFFFF0); line(50,0,50,550); line(50,550,1024,550); fill(#FFFFF0); //ellipse(50,585,100,100); stroke(#FFFFF0); line(40,570,10,540); line(40,570,90,570); line(10,540,mouseX,mouseY); line(90,570,mouseX,mouseY); fill(0); //ellipse(mouseX,mouseY,20,20); line(40,570,40,620); textFont(f); textAlign(CENTER); stroke(#FFFFF0); fill(#FFFFF0); text("the bullet left: "+xbull,590,590); text("time: "+xt,850,590); float ptime=0.1; int index=dur; stroke(#FFFFF0); fill(#FFFFF0); ellipse(mouseX+xv.x*ptime*index,mouseY-xv.y*ptime*index+0.5*9.8*ptime*ptime*index*index,20,20); int jndex=0; for(jndex=0;jndex<8;jndex++){ float xass1=(mouseX+xv.x*ptime*index-xpos[jndex].x-124); float xass2=(mouseY-xv.y*ptime*index+0.5*9.8*ptime*ptime*index*index-xpos[jndex].y); double dis=sqrt(xass1*xass1+xass2*xass2); if(dis>-20&&dis<20) {xpos[jndex].x=100000;xleft--;} } for(jndex=0;jndex<8;jndex++) ellipse(xpos[jndex].x+124,xpos[jndex].y,20,20); if(dur<1000) dur++; else{ mode=27; xbull--; dur=0; } if(mouseX+xv.x*ptime*index>=1024||mouseY-xv.y*ptime*index+0.5*9.8*ptime*ptime*index*index>=620) {mode=27; xbull--; dur=0;} if(xleft==0) mode=29; if(xbull==0) mode=30; } if(mode==29){ premode=mode; background(0); textFont(f); textAlign(CENTER); finalscore+=10; text("good job",0.5*width,0.5*height); noStroke(); int index ; for(index=0;index<8;index++) { xpos[index].x=random(900); xpos[index].y=random(550); } } if(mode==30){ premode=mode; background(0); textFont(f); textAlign(CENTER); text("sorry you failed",0.5*width,0.5*height); noStroke(); int index; for(index=0;index<8;index++) { xpos[index].x=random(900); xpos[index].y=random(550); } } } void keyPressed(){ if(key == 'c') { if(mode==100) mode=premode; else mode++; } if(key=='b'){ mode=100; } if(key=='n'){ if(mode==2) mode=10; if(mode==3) mode=20; if(mode==4) mode=30; if(mode==14) mode=2; else mode=1; } if(key=='j'){ if(mode==9) mode=10; if(mode==8) mode=11; if(mode==7) mode=12; if(mode==2) mode=7; if(mode==3) mode=20; if(mode==4) mode=27; if(vo>=5){ fill(#FFFFF0); stroke(#FFFFF0); ellipse(manX,manY,100*order+100,100*order+100); int index=0; for(index=0;index<10;index++){ float dis=sqrt((position[index].x-manX)*(position[index].x-manX)+(position[index].y-manY)*(position[index].y-manY)); if(dis<=100+order*100) { vball[index].x *= -1; vball[index].y *= -1; } order=0; } vo=0; } } if(key=='s'){ if(mode==3) mode=4; if(mode==2) mode=3; if(mode==8) mode=9; if(mode==7) mode=8; if(manY<=600) manY+=10; if(manY<=600) vman.y+=10; } if(key=='w'){ if(mode==3) mode=2; if(mode==4) mode=3; if(mode==8) mode=7; if(mode==9) mode=8; if(manY>=110) manY-=10; if(manY<=600) vman.y=-10; else vman.y=0; } if(key=='a'){ if(manX>=100) manX-=10; if(manX<=600) vman.x=-10; else vman.x=0; } if(key=='d'){ if(manX<=920) manX+=10; if(manX<=600) vman.x=10; else vman.x=0; } }
相关文章推荐
- 3.3 1!到n!的和
- Spring4笔记6--Spring与AOP
- 企业应用开发中最常用c++库
- 3.2 读入两个参数
- GitHub 基于远程分支创建分支
- 3.1 读入一个参数
- 一个php下的人民币小写转大写的代码
- java简易聊天室
- QT重新构建功能使用
- C++笔记之析构函数
- 【C++】指针(6):从函数返回指针
- ThinkPHP模板自定义标签使用方法
- 【c++】函数模板
- [bigdata-041] python3+re 正则表达式 手机号微信号qq号
- 【C++】指针(5):指向指针的指针
- 使用python库xlsxwriter库来输出各种xlsx文件
- [java基础]匿名内部类的使用
- 【C++】指针(4):指针数组
- noi题库(noi.openjudge.cn) 1.11编程基础之二分查找T01、02、04
- noi题库(noi.openjudge.cn) 1.13编程基础之综合应用 T12 分数求和