我是一名新编码员 . 我无法为我正在处理的这段示例代码添加一个启动和停止按钮 . 我敢肯定我必须在游戏课上混淆 Thread.sleep(10); . 该代码在程序运行时启动游戏 . 有没有办法我可以添加启动按钮来启动线程 . 我已经创建了j按钮 . 谢谢 .

游戏类

import java.awt.Graphics;

import java.awt.Graphics2D;

import java.awt.RenderingHints;

import java.awt.event.KeyEvent;

import java.awt.event.KeyListener;

import javax.swing.JFrame;

import javax.swing.JOptionPane;

import javax.swing.JPanel;

@SuppressWarnings("serial")

public class Game extends JPanel {

Ball ball = new Ball(this);

Racquet racquet = new Racquet(this);

public Game() {

addKeyListener(new KeyListener() {

@Override

public void keyTyped(KeyEvent e) {

}

@Override

public void keyReleased(KeyEvent e) {

racquet.keyReleased(e);

}

@Override

public void keyPressed(KeyEvent e) {

racquet.keyPressed(e);

}

});

setFocusable(true);

}

private void move() {

ball.move();

racquet.move();

}

@Override

public void paint(Graphics g) {

super.paint(g);

Graphics2D g2d = (Graphics2D) g;

g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,

RenderingHints.VALUE_ANTIALIAS_ON);

ball.paint(g2d);

racquet.paint(g2d);

}

public void gameOver() {

JOptionPane.showMessageDialog(this, "Game Over", "Game Over", JOptionPane.YES_NO_OPTION);

System.exit(ABORT);

}

public static void main(String[] args) throws InterruptedException {

JFrame frame = new JFrame("Mini Tennis");

Game game = new Game();

frame.add(game);

frame.setSize(300, 400);

frame.setVisible(true);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

while (true) {

game.move();

game.repaint();

Thread.sleep(10);

}

}

}

球类

import java.awt.Graphics2D;

import java.awt.Rectangle;

public class Ball {

private static final int DIAMETER = 30;

int x = 0;

int y = 0;

int xa = 1;

int ya = 1;

private Game game;

public Ball(Game game) {

this.game= game;

}

void move() {

if (x + xa < 0)

xa = 1;

if (x + xa > game.getWidth() - DIAMETER)

xa = -1;

if (y + ya < 0)

ya = 1;

if (y + ya > game.getHeight() - DIAMETER)

game.gameOver();

if (collision()){

ya = -1;

y = game.racquet.getTopY() - DIAMETER;

}

x = x + xa;

y = y + ya;

}

private boolean collision() {

return game.racquet.getBounds().intersects(getBounds());

}

public void paint(Graphics2D g) {

g.fillOval(x, y, DIAMETER, DIAMETER);

}

public Rectangle getBounds() {

return new Rectangle(x, y, DIAMETER, DIAMETER);

}

}

球拍类

import java.awt.Graphics2D;

import java.awt.Rectangle;

import java.awt.event.KeyEvent;

public class Racquet {

private static final int Y = 330;

private static final int WIDTH = 60;

private static final int HEIGHT = 10;

int x = 0;

int xa = 0;

private Game game;

public Racquet(Game game) {

this.game = game;

}

public void move() {

if (x + xa > 0 && x + xa < game.getWidth() - WIDTH)

x = x + xa;

}

public void paint(Graphics2D g) {

g.fillRect(x, Y, WIDTH, HEIGHT);

}

public void keyReleased(KeyEvent e) {

xa = 0;

}

public void keyPressed(KeyEvent e) {

if (e.getKeyCode() == KeyEvent.VK_LEFT)

xa = -1;

if (e.getKeyCode() == KeyEvent.VK_RIGHT)

xa = 1;

}

public Rectangle getBounds() {

return new Rectangle(x, Y, WIDTH, HEIGHT);

}

public int getTopY() {

return Y;

}

}

java怎么重新开始游戏_添加开始,停止,重置按钮到简单的Java游戏相关推荐

  1. java最少有多少线程_【并发编程】一个最简单的Java程序有多少线程?

    一个最简单的Java程序有多少线程? 通过下面程序可以计算出当前程序的线程总数. import java.lang.management.ManagementFactory; import java. ...

  2. java中override快捷键_【基础回溯1】面试又被 Java 基础难住了?推荐你看看这篇文章。...

    本文已经收录自 https://github.com/Snailclimb/JavaGuide  (59k+ Star):[Java学习+面试指南] 一份涵盖大部分Java程序员所需要掌握的核心知识. ...

  3. java写便签_如何编写一个便签程序(用Java语言编写)

    如何编写一个便签程序(用Java语言编写) 热度:336   发布时间:2011-02-18 11:44:16 如何编写一个便签程序(用Java语言编写) 因为以前没有好好学习Java,都搞忘了,请大 ...

  4. 在Java中编写实现_在运行时编写和实现新的Java类文件

    是否可以通过某种方式将新的Java类"导入"到正在运行的程序中并加以利用? 我可以让一个程序创建一个类型为'.java'的新文件,然后将其包含在项目文件中并引用它,而不必重新启动该 ...

  5. java 安卓客户端开发_《安卓网络编程》之第一篇 java环境下模拟客户端、服务器端...

    1.Socket简介 在网络上的两个程序通过一个双向的通信连接实现数据的交换,这个双向链路的一端称为一个Socket.Socket通常用来实现客户方和服务方的连接.Socket是TCP/IP协议的一个 ...

  6. Java开发研究生薪资_转行学什么技术最赚钱?选择java,你绝对不会后悔

    学Java的人现在确实很多,一般选择入行做IT做编程开发的人,基本都把Java作为首选语言. 为什么说选择java是比较好的呢,主要是从以下几个方面来看的: 1.高频率使用 java最为当今最火爆的编 ...

  7. java线程知乎_全网独家!知乎20K点赞的Java并发多线程笔记,简直堪称神仙级文档...

    有很多小伙伴都问过我,头条号里的关于java多线程的文章有pdf版本吗?我其实很想弄pdf,但是前段时间一直没时间去折腾,我把每个Java并发编程核心技术的都整理成了一个又一个的文档.昨天也是终于全部 ...

  8. python编写赛车游戏单机版_使用Python中OrderedDict模拟一个简单的竞速游戏排名

    上一篇,我们梳理了Python中关于字典排序的一些常用方法(杂乱无章的数据结构如何进行排序,简明讲述Python字典排序那些事).其中,我们讲到了Python的collections模块中的Order ...

  9. Java实现一元函数遗传算法_遗传算法的基本概念和实现,附Java实现案例!

    基因遗传算法是一种灵感源于达尔文自然进化理论的启发式搜索算法.该算法反映了自然选择的过程,即最适者被选定繁殖,并产生下一代.本文简要地介绍了遗传算法的基本概念和实现,希望能为读者展示启发式搜索的魅力. ...

  10. java打开网页横屏_巅峰之战!三款最热java手机浏览器横屏

    对于非智能机用户来说,有一款出色的Java手机浏览器是尽享手机冲浪乐趣的关键.目前,中国java手机浏览器市场,用户最热衷的莫过于OperaMini.UC浏览器7.7.手机QQ浏览器2.0.那么,这三 ...

最新文章

  1. 彻底理解Java的feature模式
  2. golang中的strings.LastIndexAny
  3. 大数运算(1)——大数储存
  4. 深度学习笔记5:正则化与dropout
  5. [转]C#与数据结构--树论--平衡二叉树(AVL Tree)
  6. Docker精华问答 | 如何让一个容器连接两个网络?
  7. Intellij IDEA 配置
  8. mybatis之xml中日期时间段查询的sql语句
  9. shell awk学习3
  10. 高阶篇:4.4)FMEA手册的疑问与不足(个人观点)
  11. PDF复制文本快速去除换行,解决段落错乱
  12. 编程中的概念理解-回调和eTS开发语言
  13. 冲刺IPO:Soul在深红市场打开的社交元宇宙
  14. 视频|《8问》浙江大学张宏鑫:边缘计算或许是区块链的福音
  15. html js不触发_「万字整理 」这里有一份Node.js入门指南和实践,请注意查收 ??
  16. 会计学计算机技能,财经会计专业,需要懂IT技能吗?编程呢?
  17. python自动化通过邮件发送测试结果
  18. oj试题 火车票退票费计算(函数专题)(1103)
  19. 认识iTween插件和安装
  20. 硅谷首富:拉里 埃里森 1

热门文章

  1. Android开发工程师已难找工作
  2. 阿尔伯塔计算机硕士要求,阿尔伯塔大学计算机硕士专业介绍
  3. 手机app网易邮箱服务器设置,网易邮箱默认开通IMAP服务
  4. chm sharp安卓版_CHM 阅读器
  5. 笔记本电脑怎么用u盘重装系统,u盘给电脑安装系统的方法
  6. ReThought (一): 如何构建理想的开发团队
  7. 云计算之云计算和虚拟化的区别
  8. Linux学习简单教程和常用命令(小白学习法)
  9. 三点式女青年和免费的笔记本电脑
  10. ubuntu 14.04 安装搜狗拼音输入法