package com.day09.am01;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
import java.util.Timer;
import java.util.TimerTask;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
/*
* 1--窗口+面板+固定
* 2--在面板上画出一个小球(中央处)
* 3--让小球动起来
* 4--对小球的运动方向和方向值进行判断,并进行处理方向的修正,实现小球的反弹
* 5--添加挡板并实现鼠标控制挡板移动
* 6--小球碰到挡板和没有碰到挡板的情况处理
*
*
*/
public class TTQGame extends JFrame implements MouseMotionListener{
private static final long serialVersionUID = 1L;
private int fw = 800 ; //窗口的尺寸
private int fh = 600 ;
private TTQP ttqp = null ;
private int bx = 200 ; //球的初始位置
private int by = 200 ;
private int b2r = 50 ; //球的尺寸
private String direction = "right_down" ; //初始方向 右下
private Timer timer = new Timer();
private int block_x = 350 ;
private int block_y = 580 ;
private int block_w = 100 ;
private int block_h = 20 ;
private int speed = 1 ;
private int score = 0 ;
public TTQGame() {
this.setAlwaysOnTop(true);
this.setUndecorated(true);
this.getContentPane().setBackground(Color.BLACK);
this.setSize(fw, fh);
this.setLocationRelativeTo(null);
this.setResizable(false);
ttqp = new TTQP();
this.add(ttqp);
this.setVisible(true);
this.addMouseMotionListener(this);
this.addKeyListener(new KeyListener() {
@Override
public void keyTyped(KeyEvent e) {}
@Override
public void keyReleased(KeyEvent e) {}
@Override
public void keyPressed(KeyEvent e) {if(e.getKeyCode()==32){System.exit(0);}}});
}
class TTQP extends JPanel{
private static final long serialVersionUID = 1L;
public TTQP() {
this.setOpaque(false);
timer.schedule(new TimerTask() {
@Override
public void run() { //实现小球的移动
/*
* 定义好每一个方向的坐标处理
*/
if("right_down".equalsIgnoreCase(direction)){ //右下方向的位置处理
bx += speed ; by += speed ;
}
if("right_up".equalsIgnoreCase(direction)){ //右上方向的位置处理
bx += speed ; by -= speed ;
}
if("left_up".equalsIgnoreCase(direction)){//左上方向的位置处理
bx -= speed ; by -= speed ;
}
if("left_down".equalsIgnoreCase(direction)){//左下方向的位置处理
bx -= speed ; by += speed ;
}
/*
* 定义好发生什么情况时,如何修正小球的方向
*/
// 如果小球底部y坐标值》=挡板上边的y坐标 by + b2r >= block_y
// 并且小球底部x坐标值》=挡板上边的x坐标 bx + b2r/2 >= block_x
// 并且《=挡板上边的x坐标值+挡板的宽度 bx + b2r/2 <= block_x + block_w
// 那么 正常改变方向
// 否则 程序停止 GAME OVER
// if(by+b2r>=fh){ //底边的判断
// if("right_down".equalsIgnoreCase(direction)){ //小球来自右下
// direction = "right_up" ;
// }else{ //小球来自左下
// direction = "left_up" ;
// }
// }
if(by + b2r >= block_y && bx + b2r/2 >= block_x && bx + b2r/2 <= block_x + block_w){
if("right_down".equalsIgnoreCase(direction)){ //小球来自右下
direction = "right_up" ;
speed ++ ;
score ++ ;
}else{ //小球来自左下
direction = "left_up" ;
speed ++ ;
score ++ ;
}
}
if(by + b2r >= fh){
JOptionPane.showMessageDialog(ttqp, "GAME OVER !", "玩家提示信息",JOptionPane.DEFAULT_OPTION);
Runtime.getRuntime().exit(0);
}
if(bx+b2r>=fw){ //右边的判断
if("right_up".equalsIgnoreCase(direction)){ //小球来自 右上
direction = "left_up" ;
}else{ //小球来自右下
direction = "left_down" ;
}
}
if(by<=0){ //顶边的判断
if("left_up".equalsIgnoreCase(direction)){ //小球来自 左上
direction = "left_down" ;
}else{ //小球来自右上
direction = "right_down" ;
}
}
if(bx<=0){ //左边的判断
if("left_up".equalsIgnoreCase(direction)){ //小球来自 左上
direction = "right_up" ;
}else{ //小球来自左下
direction = "right_down" ;
}
}
TTQP.this.repaint() ;
}
}, 0 , 10) ;
}
@Override
public void paint(Graphics g) {
g.setColor(Color.WHITE);
g.fillOval(bx, by, b2r, b2r);
g.setColor(Color.PINK);
g.fillRect(block_x, block_y, block_w, block_h);
g.setColor(Color.RED) ;
g.drawString("SCORE : " + score, 20, 20) ;
}
}
public static void main(String[] args) {
new TTQGame();
}
@Override
public void mouseDragged(MouseEvent e) { //拖拽方法 实现控制挡板的移动
block_x = e.getX() ;
if(block_x <=0){
block_x = 0 ;
}
if(block_x+block_w >=fw){
block_x = fw-block_w ;
}
this.repaint() ;
}
@Override
public void mouseMoved(MouseEvent e) {}
}
相关推荐
Java源码是男人就坚持30秒
Java版的是男人就坚持30秒源码
java多线程游戏设计-弹球游戏(包含全部代码)
java多线程游戏设计
java 是男人就坚持30秒
利用java多线程技术制作小游戏 是男人就坚持30秒
并发-1-从直观的swing弹球感受并发
大家好,从今天开始,有计划的恶补一下并发知识。 目录见:目录 示例代码来源 《Java核心技术 卷1 第10版》 Core Java Volume I-Fundamentals(10th Edition) [美] Cay S.Horstmann 著 周立新 陈波 叶乃文 邝劲筠 杜永萍 译 一、效果图 上图的却显示无法通过多次点击Start出现多个弹球,Close也没法关闭。 上图用到了线程,可发射多个弹球并且可Close。 二、示例代码 git仓库 git@github.com:cmhhcm/g
多线程实例—是男人就坚持30秒
多线程实例—是男人就坚持30秒
javaSE实现是男人就坚持20秒的小游戏
使用javaSE实现的小游戏,试用于把javaSE学完,为了巩固知识或者为了娱乐而开发的小游戏。在游戏的开发中包含了一些小算法,仔细研究能极大地提升自己的思想和编程能力。而且,把这类游戏研究清楚,其他的所有竖版飞行类游戏自己都可以开发了。
java弹球游戏代码_Java基于swing实现的弹球游戏代码
本文实例讲述了Java基于swing实现的弹球游戏代码。分享给大家供大家参考。主要功能代码如下:package Game;import java.awt.Graphics;import java.awt.Insets;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.Arr...
飞机躲避子弹(是男人就坚持20秒的改进版)
使用eclipse开发的小游戏,适合大三的期末大作业。程序中使用Canvas,数据库和精灵等东西,简单方便
Java小游戏——是男人就坚持20秒
Java小游戏——是男人就坚持20秒 给大家分享一个小游戏,这是一个Swing项目,先用代码画界面板,然后依次添加飞机、子弹、计时器等: 代码如下: /* * 程序的主窗体 */ public class FrmMain extends JFrame { /* * 初始的一些全局变量 1是否存活 2方向 3子弹数量 4飞机 */ // 1是否存活 pu
Java多线程弹球
Java做的弹球图形界面小游戏使用awt.*可以创建多个小球.
一个小游戏《是男人就坚持30秒》
本人学习阶段有老师辅导 独立完成的比较风靡的小游戏 供各T友把玩改进不求最好只求更好!
java是男人就坚持20秒源代码_是男人就坚持20秒 java的swing弹弹球GAME
package com.day09.am01;import java.awt.Color;import java.awt.Graphics;import java.awt.event.KeyEvent;import java.awt.event.KeyListener;import java.awt.event.MouseEvent;import java.awt.event.MouseMotio...
java课程设计(题目:随机运动的彩色弹弹球)
用java写的彩色弹弹球。是我的课程设计题目,题目要求如下:画出若干彩色弹弹球,每个球获得大小不等的初速度,运动方向各不相同,运动过程速度逐渐减小,双击它,使它再获得动力。涉及线程(主要是定时器的使用)以及图形用户界面,功能基本实现,应付普通课程设计,绝对没问题。(请从com.main包里的Main类进入程序,涉及到颜色选择,我都加注释了,一看就懂)
动态弹球(Java多线程实现+swing)
根据老师上课讲的内容,完成了一个小作业,发到这里,希望可以帮助到需要的人,也希望大家来指点。 效果图: 点击"创建小球",在窗体底部任意位置弹出颜色随机小球,小球碰到四边或与其他小球相撞就会反弹,随着时间增加,小球运动速度加快并变大: 首先我们创建两个按钮对象以及一个画布对象(绘制小球),设置窗体参数: private Button startButton; private Button exitButton; private Canvas canvas; public static int
java编写的男人游戏--看你坚持多少秒
java编写的游戏,躲避子弹,看你坚持多长时间
数字逻辑课程设计 弹球(内含实验报告)
大一上的数逻课设 请多包涵
弹力弹珠java_Java多线程的运用-弹球一波
在前面我们已经讲过了多线程的概念和具体的用法,那么接下来我们就用多线程来做一个具体的小项目吧——弹球小游戏关于弹球,我们还是一样,先想清楚我们的弹球要有什么功能?1.创立一个窗口2.在窗口内任意点击位置会出现随机方向,随机速度的弹球3.弹球碰到窗口边框反弹,任意两弹球碰撞反弹(交换速度那么我们就开始吧先要搞一个窗口吧,我们就直接上代码了这个还是很容易看懂的mport javax.swing.*;i...
汽车诊断服务(UDS——0x11服务解析)
ECU复位服务(0x11)详解:该服务支持硬件/钥匙开关/软件三种复位类型(0x01-0x03),复位前需发送肯定响应。请求格式为11+子功能,响应含51+子功能。典型应用需配合安全访问流程,测试时需监控CAN总线通信及DTC状态。复位后ECU将返回默认会话,期间不处理任何诊断请求。服务在编程会话且安全解锁后执行,硬复位会初始化存储数据。
java 弹幕 弹球 多线程
java 多线程
高效静音黑科技 —— 单相直流无刷电机驱动器
然而,传统的BLDC电机驱动通常依赖于三相架构,电路复杂,成本高昂,且在低功率应用中显得有些“大材小用”。单相直流无刷电机驱动器作为一项高效、静音、经济的技术,正逐渐改变着各个领域的电机驱动方式。其精巧的控制策略、显著的优势以及广阔的应用前景,都预示着这项技术将在未来扮演越来越重要的角色。它相较于传统的三相驱动,显著简化了电路结构,降低了成本,尤其适用于低功率、对静音要求极高的应用场景。通过这些模块的协同工作,单相直流无刷电机驱动器能够实现对电机速度、扭矩的精确控制,并最大程度地降低噪声和振动。
基于卷积神经网络的人脸表情识别(JAFFE篇)
1.win10/11操作系统2.python3.7以上3.tensorflow2.4以上版本(2.0其它版本需要微调)4.内存12G,显卡4G以上(没有独显倒是也能跑...)(这个可爱的妹子就是JAFFE数据集中的图片)
4174



被折叠的 条评论
为什么被折叠?



