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编写弹球小游戏相关推荐

  1. python画圆形螺旋线_Python写的弹球小游戏

    Python 的功能强大应用广泛,从爬虫到 Web 开发,从科学计算到人工智能,都能见到它的身影.当然,Python 还可以编写游戏代码,虽然不是主流,但却十分有趣,既能提升代码能力,又能自娱自乐.敲 ...

  2. python弹球小游戏程序设计_Python写的弹球小游戏

    原标题:Python写的弹球小游戏 Python 的功能强大应用广泛,从爬虫到 Web 开发,从科学计算到人工智能,都能见到它的身影.当然,Python 还可以编写游戏代码,虽然不是主流,但却十分有趣 ...

  3. 大一下期末javaGUI课设之swing+MYSQL实现“弹珠传说”弹球小游戏

    目录 一.游戏概述 二.需求分析 三.运行环境 四.详细设计 1.游戏初始化界面 2.单人闯关模式的设计 3.双人合作模式 4.数据库连接与操作 5.数据库连接,排行榜 五.总结 说明 该课设一共分成 ...

  4. python小游戏编程实例-Python实现的弹球小游戏示例

    本文实例讲述了Python实现的弹球小游戏.分享给大家供大家参考,具体如下: 弹球 1. Ball 类 draw负责移动Ball 碰撞检测,反弹,Ball检测Paddle 2.Paddle类 draw ...

  5. python弹球小游戏程序_Python基于Tkinter模块实现的弹球小游戏

    本文实例讲述了Python基于Tkinter模块实现的弹球小游戏.分享给大家供大家参考,具体如下: #!usr/bin/python #-*- coding:utf-8 -*- from Tkinte ...

  6. python两人一碰_python运用pygame库实现双人弹球小游戏

    使用python pygame库实现一个双人弹球小游戏,两人分别控制一个左右移动的挡板用来拦截小球,小球会在两板间不停弹跳,拦截失败的一方输掉游戏,规则类似于简化版的乒乓球. 因为是第一次用pygam ...

  7. python弹球小游戏程序_Python实现弹球小游戏

    本文主要给大家分享一个实战项目,通过python代码写一款我们儿时大多数人玩过的游戏---小弹球游戏.只不过当时,我们是在游戏机上玩,现在我们通过运行代码来玩,看看大家是否有不一样的体验,是否可以重温 ...

  8. html游戏技术文档编写,HTML5编写的小游戏

    HTML5编写的小游戏 HTML5 是什么东西?而 HTML5 的优势又在哪里?大家可以回顾之前一篇相关文章了解下 HTML5 知识:<深入分析:Flash VS HTML5到底谁统江山> ...

  9. java小游戏实训目的_Java弹球小游戏实验报告.doc

    Java弹球小游戏实验报告 滨江学院 Java程序设计实验报告 题 目 弹球小游戏 姓 名 许浩 学 号 20112346064 学 院 滨江学院 专 业 网络工程 年 级 2011级 指导教师 张舒 ...

最新文章

  1. android.view.InflateException: Binary XML file line #7: Binary XML file line #7
  2. 报表-对于多数据进行 分sheet以及 分workbook处理
  3. PMP之项目风险管理---实施定性风险分析
  4. 我在使用chrome经常使用的一些技巧
  5. URL与URI的不同
  6. MFC线程创建运行关闭的问题
  7. 此内容过于真实,引起强烈舒适
  8. redis延迟队列 实现_灵感来袭,基于Redis的分布式延迟队列
  9. secureFX上传文件的时候报错,secureFX崩溃
  10. 第一个MapReduce程序-------WordCount
  11. [告知]在评论中发布广告者必删!
  12. 计算机组成原理实用教程第3版课后答案,计算机组成原理实用教程课后习题答案.docx...
  13. ansible安装与配置文件
  14. 蓝桥杯2016年第七届C++省赛B组第一题-煤球数目
  15. 强化学习 马尔可夫决策过程(MDP)是什么
  16. 快速傅里叶变换(MATLAB实现)
  17. honeyview(蜂蜜浏览器)将图片置于顶层
  18. 苹果MacBook常用快捷键 复制 粘贴 截屏 录屏快捷键
  19. [NLP]高级词向量表达之Word2vec详解(知识点全覆盖)
  20. 最先进的智能采茶机器人_智能采茶机器人关键技术研究

热门文章

  1. 【Phalcon】升级版本
  2. GPU性能大决战!2012最新显卡排行榜
  3. google 支付教程
  4. 使用STM32串口模块配合SerialChart实现虚拟示波器功能
  5. HCNP BGP协议 思维导图
  6. Ubuntu上查看tomcat进程以及运行状态
  7. RBA验厂辅导,RBA认证7.0供应商行为准则中文版详细内容
  8. 慕尼黑工业大学自动驾驶课程
  9. 七大常见排序,你究竟懂几个?(上)
  10. 看不懂CAD建筑图纸怎么办?有什么CAD快速看图或识图的技巧吗?