日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

用Processing编写弹球小游戏

發布時間:2024/3/26 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用Processing编写弹球小游戏 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Processing的編碼邏輯和Java很像,我在學習Java之前拿Processing練習過一段時間,在這篇文章中我用processin制作了一個彈球小游戲。有兩名玩家,player1和player2, 左右兩個滑塊是每個玩家的彈球臺,玩家通過操作其上下移動,每個玩家有3條命,如果沒接住球會掉一條命,每次發出的球的速度都是隨機的,當其中一名玩家的生命值為0時,游戲結束,下面是代碼和運行效果圖。

boolean start; boolean move1; boolean move2; boolean move3; boolean move4; boolean reset; float speed; float speed2; float x; float y; float r; float paddleX; float paddleY; float paddleW; float paddleH; float paddleS; float paddleX2; float paddleY2; int live1=3; int live2=3; //trail float []trail1=new float[20]; float []trail2=new float[20];// set up necessary values void setup(){size(800,600);speed2=random(1,2);x=width/2;y=height/2;r=20;rectMode(CENTER);paddleX=0;paddleY=height/2;paddleX2=width;paddleY2=height/2;paddleW=20;paddleH=100;paddleS=6;//make the ball start moving with random directionchooseSpeed();chooseSpeed2(); } void draw(){background(0);drawEllipse();trail1[0]=x;trail2[0]=y;//ellipse(x,y,r,r);drawPaddle();movePaddle();limitPaddle();touchPaddle();drawPaddle2();movePaddle2();limitPaddle2();touchPaddle2();live();//start the ballif(start==true){x+=speed;y+=speed2; // The ball moves and bounces well at the top and bottom canvas boundaryif(y>height-r/2||y<0+r/2){speed2*=-1;}if(x==0){live1-=1;}if(x==width){live2-=1;}//Displaying Game Over messagesif(live1<0){background(0);textSize(100);text("Game Over",150,300);text("Player2 wins",140,400);}if(live2<0){background(0);textSize(100);text("Game Over",150,300);text("Player1 wins",140,400);}//noloop();if(x+r/2<0||x-r/2>width){speed=0;speed2=0; } } } void keyPressed(){// press key t to start the game or pause the gameif (key=='t'||key=='T'){start=true;}//The paddles are controlled properly with the designated keys// press key to make the paddle go upif (key=='w'||key=='W'){move1=true;}// press key to make the paddle to go downif (key=='s'||key=='S'){move2=true;}// press key to make the paddle2 to go upif (key=='i'||key=='I'){move3=true;}// press key to make the paddle2 to go downif (key=='k'||key=='K'){move4=true;}if (key=='n'||key=='N'){setup();draw();}save("Project3version1.pde");}void keyReleased(){// press key to make the paddle go upif (key=='w'||key=='W'){move1=false;}// press key to make the paddle to go downif (key=='s'||key=='S'){move2=false;}if (key=='i'||key=='I'){move3=false;}if (key=='k'||key=='K'){move4=false;} } //visualized trail void drawEllipse(){ float t1=trail1[0]; float t2=trail2[0];for(int i=trail1.length-1;i>0;i--){trail1[0]=t1;trail1[i]=trail1[i-1];trail2[0]=t2;trail2[i]=trail2[i-1];}for(int i=0;i<trail1.length-1;i++){fill(255);noStroke();ellipse(trail1[i],trail2[i],r-i,r-i);} } void drawPaddle(){fill(255);rect(paddleX,paddleY,paddleW,paddleH); } void movePaddle(){if(move1){paddleY-=paddleS;}if(move2){paddleY+=paddleS;} } //limit the paddle, dont let it move out of the canvas void limitPaddle(){if(paddleY-paddleH/2<0){paddleY= paddleY+paddleS;}if(paddleY+paddleH/2>height){paddleY=paddleY-paddleS; } } //The ball bounces correctly at left paddle void touchPaddle(){if(paddleX+paddleW/2>x-r/2&&y-r/2<paddleY+paddleH/2&&y+r/2>paddleY-paddleH/2){speed=-speed;} } // the right paddle void drawPaddle2(){fill(255);rect(paddleX2,paddleY2,paddleW,paddleH); } void movePaddle2(){if(move3){paddleY2-=paddleS;}if(move4){paddleY2+=paddleS;} } //limit the paddle2, dont let it move out of the canvas void limitPaddle2(){if(paddleY2-paddleH/2<0){paddleY2= paddleY2+paddleS;}if(paddleY2+paddleH/2>height){paddleY2=paddleY2-paddleS; } } //The ball bounces correctly at paddle2 void touchPaddle2(){if(paddleX2-paddleW/2<x+r/2&&y-r/2<paddleY2+paddleH/2&&y+r/2>paddleY2-paddleH/2){speed=-speed;} } void chooseSpeed(){float choose=random(0,10);if(choose>=5){speed=4;}else{speed=-4;} } void chooseSpeed2(){float choose2=random(0,10);if(choose2>=5){speed2=random(3,10);}else{speed2=random(-10,-3);} } //Displaying the remaining lives of each player void live(){fill(255);textSize(20);text("Player 1 Lives remain: "+live1,20,30);text("Player 2 Lives remain: "+live2,520,height-20); }

這是開始的界面,按“t"會開始游戲,彈球被我設計成流星的樣式運動,左邊滑塊按“w”和“s”,右邊滑塊按“i”和“k”分別進行上下移動。

上圖彈球從左邊彈出去沒有接住所以player的生命值會減一,按“n”會重新發球繼續游戲,當remain值為0時,彈球彈出界面沒被接住,游戲將結束,如下圖所示。

?

?

總結

以上是生活随笔為你收集整理的用Processing编写弹球小游戏的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。