图形化界面的简单应用
先看效果

java小游戏推球球

代码如下

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;public class PinBall {JFrame f = new JFrame("弹球小游戏");//桌面的高度和宽度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 final int Ball_Size = 16;//定义变量,记录小球的坐标private int ballX = 120;private int ballY = 20;//定义变量,记录小球在x和y轴方向上移动的速度private int speedX = 8;private int speedY = 4;//记录球拍的坐标private int racketX = 120;private final int racketY = 340;//标识当前游戏是否结束private boolean isOver = false;//声明一个定时器private Timer timer;//自定义一个类,继承canvas,充当画布private class MyCanvas extends Canvas{//重写paint方法public void paint(Graphics g){//绘制内容if(isOver){//游戏结束g.setColor(Color.RED);g.setFont(new Font("Times",Font.BOLD,30));g.drawString("游戏结束~",60,200);}else{//游戏中//绘制小球g.setColor(Color.RED);g.fillOval(ballX,ballY,Ball_Size,Ball_Size);//绘制球拍g.fillRect(racketX,racketY,Racket_width,Racket_Height);}}}//创建绘画区域MyCanvas drawArea = new MyCanvas();public void init(){//组装视图,游戏逻辑的控制//完成球拍坐标的变化KeyListener listener = new KeyAdapter() {@Overridepublic void keyPressed(KeyEvent e) {//获取当前按下的键int Keycode = e.getKeyCode();if(Keycode == KeyEvent.VK_LEFT){if(racketX > 0){racketX -= 15;}}if(Keycode == KeyEvent.VK_RIGHT){if (racketX < (Table_Width - Racket_width)) {racketX += 15;}}}};//给Frame和drawArea注册监听器f.addKeyListener(listener);drawArea.addKeyListener(listener);//小球坐标的控制ActionListener task = new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {//根据边界范围,修正速度if(ballX <= 0 || ballX >= (Table_Width-Ball_Size)){speedX = -speedX;}if(ballY <= 0 || (ballY > racketY-Ball_Size && ballX > racketX && ballX < racketX+Racket_width)){speedY = -speedY;}//当前小球超出球范围,游戏结束if(ballY > racketY-Ball_Size && (ballX < racketX || ballX > racketX+Racket_width)){//停止定时器timer.stop();isOver = true;//重绘界面drawArea.repaint();}//更新小球的坐标,重绘界面ballX += speedX;ballY += speedY;//重绘界面drawArea.repaint();}};timer = new Timer(40,task);timer.start();drawArea.setPreferredSize(new Dimension(Table_Width,Table_Height));f.setSize(310,410);f.setLocation(600,300);f.add(drawArea);f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);f.setVisible(true);}public static void main(String[] args) {new PinBall().init();}
}

JAVA小游戏推球球相关推荐

  1. 《Java小游戏》:球球大作战

    此文转载自:https://blog.csdn.net/pandas_dream/article/details/113086334 目录 游戏规则 主要实现方法 游戏流程展示 1. 开始游戏页面 2 ...

  2. Java小游戏-推箱子

    摘要 推箱子是来自于日本的一个古老游戏,目的是在于训练逻辑思维能力,在一个狭小的空间里,要把木箱推到指定的位置,稍不小心箱子就会无法移动或者被通道堵住的情况,所以需要巧妙的利用有限的空间和通道,合理安 ...

  3. 用JAVA制作小游戏——推箱子(三)

    本篇博客主要是对推箱子地图编辑器功能的代码讲解. 首先给出这段代码的部分运行截图: 重难点: 地图编辑器主要有三个重难点: 需要有一个绘制地图的界面 能够实现地图绘制的功能 地图绘制完成后需要将地图内 ...

  4. 用JAVA制作小游戏——推箱子(二)

    本篇博客主要是推箱子游戏界面功能的代码讲解. 首先先给出这段代码的部分运行截图: 重难点: 游戏界面主要有五个重难点: 固定好地图的位置 地图的显示 构建菜单栏 读取地图数据 玩家操作功能实现 地图的 ...

  5. 用JAVA制作小游戏——推箱子(一)

    本篇博客是对推箱子游戏首页代码的展示 效果图: 难点: 在背景图上添加按钮. 由于直接使用add方法,会变成图片一块区域,按钮一块区域,彼此互不重叠,形成的界面效果不太好,因此用了JLayeredPa ...

  6. 各种经典java小游戏_Java是这个世界上最好的语言!

    为什么? 请看TIOBE最新发布的编程语言排行榜: TIOBE开发语言排行榜每月更新一次,其结果可以用来检阅开发者的编程技能能否跟上趋势,或是否有必要作出战略改变,以及什么编程语言是应该及时掌握的. ...

  7. 尝试写java小游戏(捕鱼达人)

    捕鱼达人 (平时都是在学校搞c语言,写算法.忽然java实验课大作业让设计一个小游戏的确挺蒙的,好在我之前学习过开发微信小程序,边查文档文档边做也比较快,下面有我的源码,截图,欢迎刚接触java小游戏 ...

  8. Java小游戏:模仿微信群发红包

    Java小游戏:模仿微信群发红包 微信群主发普通红包,普通红包规则: 群主的一笔金额,从群主余额中扣除,平均分成n等分,让群员领取. 成员领取红包后,保存到余额中. 请根据规则,完成案例中所有类的定义 ...

  9. 《Java小游戏实现》:坦克大战

    <Java小游戏实现>:坦克大战 前面写了一个简单的聊天小程序,今天开始就写一个坦克大战的游戏,算是对Java相关小知识点的一个应用. 这个游戏的完成,我们也是分步完成,逐步累加,一个一个 ...

最新文章

  1. arm服务器芯片尺寸,华为第四代ARM服务器自研芯片Hi1620规格曝光 全球首款7nm工艺的数据中心用ARM处理器...
  2. 【MFC系列-第7天】MFC类库封装原理
  3. 读取文件中的文本并返回字符串
  4. 可以同时开发php Java_php可以和java一起开发吗
  5. 【java】打印一个对象即打印出该对象toString()返回值
  6. 三菱gxworks3安装失败_三菱gx works3下载 Gx Works3(三菱PLC编程软件) v1.031h 中文安装版(附安装教程+序列号) 下载-脚本之家...
  7. 戴尔电脑vostro恢复出厂(预装Win10)的设置方法
  8. 给机器人罗宾写一封英语回信_小学英语人教(13版三起点)六年级上册Unit1
  9. linux中命令du -sm,Linux中du命令使用介绍
  10. 分块矩阵求逆 matlab,矩阵的分块求逆及解线性方程组.doc
  11. Linux学习——linux网络配置、修改主机名、网络映射、远程连接工具XShell的使用(超详细)
  12. 治愈选车困难症只需11.98万起!传祺影酷正式上市
  13. 力扣378.有序矩阵中第K小的元素
  14. 涂鸦智能斩获2016中国企业服务50强奖
  15. MQTT协议-MQTT协议简介及协议原理
  16. python+django勤工助学管理系统Vue项目介绍
  17. 【算法基础】TOPSIS法
  18. 量子前沿英雄谱|斯坦福大学应用物理学家Martin Fejer
  19. MySQL Workbench 导出数据
  20. 数组转对象,对象转数组

热门文章

  1. 树莓派改游戏机 retropie折腾记录
  2. 问题11:web前端开发规范手册(转)
  3. 国际象棋棋盘上马的遍历问题
  4. 关于下载环境的一些哔哔
  5. t’触发器真值表和状态方程_触发器的逻辑功能通常可用 特征方程 、 状态转换图 、 功能真值表 和 时序波形图 等多种方法进行描述。 ( )_学小易找答案...
  6. mysql修改主键自增长时报错
  7. linux网络-- 手动配置ip地址
  8. 山穷水尽疑无路,柳暗花明又一村
  9. JSP自定义标签必知必会
  10. 我的HTML基础学习笔记(复习)