弹球游戏实现原理:

隔一定时间(小于1秒)重新绘制图像,因为graphics类是一个抽象类,创建子类的时候需要把所有涉及的方法都得重写,所以这里使用的是创建canvas的子类,只需要重写它的paint()方法来实现。这里我们用了键盘监听事件、timer类等。

游戏说明:

该弹球游戏中的小球会随着时间增加速度且速度最多是横向速度和垂直速度为10。当小球的y坐标(垂直坐标)大于球拍的y坐标(垂直坐标)即判断游戏结束。控制台显示的是小球的x方向的速度和y方向的速度。

import java.awt.*;

import java.util.random;

import javax.swing.timer;

import java.awt.event.*;

public class pinball

{

private frame f=new frame("弹球游戏");

random rand=new random();

//桌面的宽度以及高度

private final int table_width=300;

private final int table_height=400;

//球拍的宽度以及高度以及水平位置、垂直位置

private final int racket_width=60;

private final int racket_height=20;

private int racketx=rand.nextint(24)*10;

private int rackety=300;

//小球的大小、运行速度、坐标

private final int ball_size=16;

private int yspeed=1;

private double xyrate=1;

private int xspeed=(int)(xyrate*yspeed);

private int ballx=rand.nextint(284);

private int bally=1;

//创建画布

private mycanvas tablearea=new mycanvas();

//定义时间类

timer timer;

//游戏是否结束的旗标

private boolean islose=false;

//设置游戏等级

private int time_times=1;

public void init(){

tablearea.setpreferredsize(new dimension(table_width,table_height));

f.add(tablearea);

//定义键盘监听器

keyadapter keyprocessor=new keyadapter()

{

public void keypressed(keyevent ke){

if(ke.getkeycode()==keyevent.vk_left){

if(racketx>0)

racketx-=10;

}

if(ke.getkeycode()==keyevent.vk_right){

if(racketx

racketx+=10;

}

}

};

f.addkeylistener(keyprocessor);

//tablearea.addkeylistener(keyprocessor);

actionlistener taskperformer=evt->

{

//小球碰到左边框或右边框

if(ballx<=0||ballx>=table_width-ball_size){

xspeed=-xspeed;

}

if(bally>rackety-ball_size&&(ballxracketx+racket_width-ball_size)){

timer.stop();

islose=true;

tablearea.repaint();

}else if(bally<=0||(bally>=rackety-ball_size&&ballx>racketx&&ballx<=racketx+racket_width)){

yspeed=-yspeed;

}

bally+=yspeed;

ballx+=xspeed;

tablearea.repaint();

if((xspeed<10&&xspeed>-10)&&(yspeed<10&&yspeed>-10)){

time_times++;

}

if(time_times==10){

if(xspeed>0){

xspeed++;

}else{

xspeed--;

}

if(yspeed>0){

yspeed++;

}else{

yspeed--;

}

time_times-=10;

system.out.println(xspeed+" "+yspeed);

}

};

timer=new timer(100,taskperformer);

timer.start();

f.pack();

f.setvisible(true);

}

class mycanvas extends canvas

{

public void paint(graphics g){

if(islose){

g.setcolor(new color(255,0,0));

g.setfont(new font("times",font.bold,30));

g.drawstring("游戏结束",50,200);

}else{

g.setcolor(new color(240,240,80));

g.filloval(ballx,bally,ball_size,ball_size);

g.setcolor(new color(80,80,200));

g.fillrect(racketx,rackety,racket_width,racket_height);

}

}

}

public static void main(string[] args)

{

new pinball().init();

}

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持萬仟网。

希望与广大网友互动??

点此进行留言吧!

java弹球游戏弹到顶会得分_java实现简单的弹球游戏相关推荐

  1. Cocos2dx游戏开发系列笔记7:一个简单的跑酷游戏《萝莉快跑》的消化(附下载)

    懒骨头(http://blog.csdn.net/iamlazybone  QQ124774397 青岛 ) 或许有天 我们羡慕和崇拜的人 因为我们的努力 也会来了解我们 说不定 还会成为好友 骨头喜 ...

  2. Cocos2dx游戏开发系列笔记7:一个简单的跑酷游戏《萝莉快跑》的消化(附下载)...

    2019独角兽企业重金招聘Python工程师标准>>> 或许有天 我们羡慕和崇拜的人 因为我们的努力 也会来了解我们 说不定 还会成为好友 骨头喜欢这样与哲哲共勉 多少个夜晚 一张长 ...

  3. java弹球游戏代码_Java实现简单的弹球游戏

    本文实例为大家分享了Java实现简单的弹球游戏的具体代码,供大家参考,具体内容如下 该程序主要是用于对java图形化界面编程进行联系,程序实现全部采用的是AWT包下的类. 程序仅做参考,供学习使用. ...

  4. 弹球小游戏java代码_java实现简单的弹球游戏

    弹球游戏实现原理: 隔一定时间(小于1秒)重新绘制图像,因为Graphics类是一个抽象类,创建子类的时候需要把所有涉及的方法都得重写,所以这里使用的是创建Canvas的子类,只需要重写它的paint ...

  5. 推箱子java下载_Java实现简单推箱子游戏

    本文实例为大家分享了Java实现简单推箱子游戏的具体代码,供大家参考,具体内容如下 *编写一个简易的推箱子游戏,使用10*8的二维字符数据表示游戏画面,H表示墙壁; &表示玩家角色: o表示箱 ...

  6. java做小窗体_java实现简单窗体小游戏----球球大作战

    java实现简单窗体小游戏----球球大作战 需求分析 1.分析小球的属性: ​坐标.大小.颜色.方向.速度 2.抽象类:Ball ​设计类:BallMain-创建窗体 ​BallJPanel-画小球 ...

  7. 象棋联机java代码_java实现简单网络象棋游戏

    本文实例为大家分享了java实现网络象棋游戏的具体代码,供大家参考,具体内容如下 游戏规则: 1.将/帅:不能出田字格,不能走斜线,只能前进后退向左向右,每次只走一格: 2.士/仕:不能出田字格,只能 ...

  8. java课设小迷宫含代码_Java小项目之迷宫游戏的实现方法

    项目要求: 一个网格迷宫由n行n列的单元格组成,每个大院个要么是空地(用0表示),要么是障碍物(用1表示),你的任务是找一条从起点到终点的移动序列,其中只能上下左右移动到相邻单元格.任何时候都不能在有 ...

  9. java写的网络版斗地主_Java实现简单的斗地主游戏

    本文实例为大家共享了Java实现斗地主游戏的详细代码,供大家参考,详细内容如下 原理图: 斗地主过程: 1.组合牌 * 2.洗牌 * 3.发牌 * 4.看牌 代码实现: package itcast. ...

最新文章

  1. 典型用户 persona
  2. 如何正确使用as follows 与 following
  3. win7计算机内存占用高,WIN7系统电脑内存占用高的解决办法有哪些
  4. 公众号服务器配置url证书问题,公众号服务器配置url,验证token一直出错,为什么?...
  5. 实战|手把手教你训练一个基于Keras的多标签图像分类器
  6. android+3.0新加的动画,Android动画片
  7. 没事聊聊C++局域网聊天软件
  8. ecmall挂件开发
  9. python虚函数_virtual(虚函数) vtbl(虚函数表)与vptr(虚函数表指针)
  10. 利用BI进行报表分析(二)--SSAS多维数据集以及维度的建立
  11. 多项式拟合怎么确定次数_PyTorch入门4 搭建多项式回归模型
  12. iOS学习01C语言数据类型
  13. OpenCV人脸识别的原理 (原文完整版)
  14. 2022高等代数笔记整理
  15. 30ea什么意思_阿玛尼ga是什么意思、和ea的区别
  16. Engineering Mathematic I -- Notes 1
  17. ApacheCN 翻译、校对、笔记整理活动(有偿)进度公告 2022.7
  18. MAC 活动监视器部分状态缺失
  19. 基于jsp+ssm的旅游活动报名系统
  20. B-004 LC滤波器的基础知识

热门文章

  1. 电子元件知识汇总4-采购
  2. JAVA|学生类Student
  3. C#调用Win32 api学习总结
  4. php随机生成验证码,php随机生成数字,php随机生成数字加字母!
  5. mysql学习之路---01
  6. 任务计划程序无法应用你的更改。用户账户未知、密码错误或用户账户没有修改此任务的权限
  7. 《文字处理软件应用》
  8. delphi基础01-delphi表达式、delphi运算符、delphi函数调用、delphi集合构造函数、delphi索引、(值或变量)delphi类型转换
  9. CAD关于文字样式添加文字样式操作(com接口c#语言)
  10. 防近视的灯哪个牌子好?世界最好的护眼灯品牌