java实现小球碰撞反弹

java实现小球碰撞反弹

首先我们要在一个窗口里面显示这个功能,因此引入JFrame类然后创建一个窗口代码如下:

JFrame win=new JFrame();//新建窗口

win.setLocation(250,100);//设置窗口位置

win.setSize(800,600);//设置窗口大小

win.show();//显示窗口

win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置关闭退出

显示如下:

要实现这个功能做基础的就是要有一个小球,就像人吃饭这句话,少了人这个主角,说什么都是白说。世间所有事物都是对象,具有属性和操作,没有对象就没有一切。就下来我们就来生成一个小球,这里用到Panel类,创建一个MyPanel类继承于Panel类然后创建一个画画方法。代码如下:

class MyPanel extends Panel{

public void paint(Graphics g) {

g.setColor(Color.yellow);

g.fillOval(100, 40, 80, 80);

}

}

创建一个对象my,添加进win窗口里。代码如下:

MyPanel my=new MyPanel();

win.add(my);

效果如下:

接下来就是让这个小球动起来,我们让这个小球向右移动,我们用线程和异常来实现。代码如下:

1.Thread t=new Thread(my);//新建线程

t.start();//开始线程

2.implements Runnable

3.public void run() {//运行方法

while(true){

repaint();//重新画圆

try {

Thread.sleep(10);十毫秒运行一次

}

catch(Exception e) {

}

}

}

4.g.fillOval(x++, 40, 80, 80);//修改每次的横坐标

效果

一步一步来,接下来我们要实现的目标就是让小球碰到边界可以反向走s。

核心代码:

[java] view plain copy

int fly=1;

[java] view plain copy

if (fly==1) {

x++;

}

if(fly ==2) {

x--;

}

if(x>720) {

fly=2;

y=y+70;

}

if(x<0) {

fly=1;

y=y+70;

}

效果

好装备的差不多了,下面就开始实现完整功能了。

效果如下:

完整代码:

[java] view plain copy

package Ball;

import java.awt.Color;

import java.awt.Graphics;

import java.awt.Panel;

import javax.swing.JFrame;

public class Ball {

public static void main(String[] args) {

// TODO Auto-generated method stub

JFrame win=new JFrame();//新建窗口

win.setLocation(250,100);//设置窗口位置

win.setSize(800,600);//设置窗口大小

win.show();//显示窗口

win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置关闭退出

MyPanel my=new MyPanel();

win.add(my);

Thread t=new Thread(my);

t.start();

}

}

class MyPanel extends Panel implements Runnable{

int x=0,y=0;

int flyx=1,flyy=1;

public void paint(Graphics g) {

g.setColor(Color.yellow);

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

// System.out.println("23");

if (flyx==1) {

x++;

}

if(flyx ==2) {

x--;

}

if(flyy==1) {

y++;

}

if(flyy==2) {

y--;

}

if(x>730) {

flyx=2;

}

if(x<0) {

flyx=1;

}

if(y<0) {

flyy=1;

}

if(y>530) {

flyy=2;

}

}

public void run() {

while(true){

repaint();

try {

Thread.sleep(10);

}

catch(Exception e) {

}

}

}

}

第一次写博客,写的不够详细,或者有错的地方欢迎大家的添加和指正,大家一起交流,我是个初学者,希望不要介意。

转载于:https://blog.51cto.com/10972685/2066435

java实现小球碰撞反弹相关教程

java语言基础之java运行环境

java语言基础之java运行环境 零基础学java难吗,我觉得这个问题主要看你意志力够不够坚定,有没有决心学下去。 我觉得马云有句话说的很有道理“今天很残酷,明天也更很残酷,后天会很美好, 但是绝大部分人会死在明天晚上。”学习java,坚持到底才是最终胜利

java性能监控

java性能监控 为什么80%的码农都做不了架构师? 1.监控cpu的使用率 1)vmstat命令 vmstat [arg1] [arg2] arg1:间隔时间(秒), arg2:采集次数 示例: $ vmstat 2 1#2表示每个两秒采集一次服务器状态,1表示只采集一次。procs -----------memory---------- ---swa

Java虚拟机规范.Java SE 8版中关于浮点类型的说明,Infinity和-I

Java虚拟机规范.Java SE 8版中关于浮点类型的说明,Infinity和-Infinity 在我们的经验中除数是不可以为零的,否则 java.lang.ArithmeticException: / by zero 在等您 但是浮点数可就不一定了 在第二章2.3.2节《浮点类型、取值集合及浮点值》中有这样的表述 代

JavaScript中的事件

JavaScript中的事件 文章目录 1.什么是事件 2.事件的注册 2.1 静态注册 2.2 动态注册 3.常用的事件 3.1 onload 加载完成事件 3.2 onclick 单击事件 3.3 onblur 失去焦点事件 3.4 onchange 内容发生改变事件 3.5 onsubmit 表单提交事件 1.什么是事件 事件是电

线性表的链式表示和实现

线性表的链式表示和实现 单链表结点类型定义 typedef struct LNode{ int data; struct LNode *next;}LNode,*Linklist;//之后便可用与定义其他结点 eg: LNode *p,*pre; 或者 Linklist p, l; 申请存储单元 LNode *p;p=new LNode; delete p; 释放结点。 链表的

java调用C++的封装库

java调用C++的封装库 用jna调用liunx的.so库。或者windows的.dll库 pom增加jna引用包: dependencygroupIdcom.sun.jna/groupIdartifactIdjna/artifactIdversion3.0.9/version/dependency 引用完成,把对应的.so或者.dll库放到系统文件目录。liunx的目录是: /

L19. 剖析驱动开发,从零实现块设备驱动!

L19. 剖析驱动开发,从零实现块设备驱动! 1. 概述 块设备主要指的是用来存储数据的设备,类似于SD卡、U盘、Nor Flash、Nand Flash、机械硬盘和固态硬盘等。块设备驱动就是用来访问这些存储设备的,其与字符设备驱动不同的是: 块设备只能以块为基本单位实现

使用Docker实现vsftpd配置——用户访问上传修改篇

使用Docker实现vsftpd配置——用户访问上传修改篇 匿名及基础搭建部分请参考:使用Docker实现vsftpd配置——匿名访问只读篇 本文不对搭建部分做相关说明 首先关闭匿名访问: sed -i 's/anonymous_enable=.*/anonymous_enable=NO/g' /etc/vsftpd.conf 关闭匿名

Java反弹球两球相撞_java实现小球碰撞反弹相关推荐

  1. java小球反弹_java实现小球碰撞反弹

    要实现这个功能做基础的就是要有一个小球,就像人吃饭这句话,少了人这个主角,说什么都是白说.世间所有事物都是对象,具有属性和操作,没有对象就没有一切.就下来我们就来生成一个小球,这里用到Panel类,创 ...

  2. Java如何让小球随机运动_用java模拟两球的随机运动及碰撞

    前面已经实现了一个球在一个窗口中随机运动,下面将在前面的基础上实现两个球的随机运动及碰撞,此次的代码中用到的算法参考了Twinsen写的一文中关于两球碰撞时的算法.程序仍旧有两个类,一个Ball类,一 ...

  3. 质量不同的球java编程_Java 实现小球碰撞GUI

    最后一次更新于2019/07/08 修复问题: 错误输入未提醒问题 碰撞小球的图形重叠问题 高速小球越界问题 感谢 大一暑假拜读学姐的一篇文章:我说这是一篇很严肃的技术文章你信吗,本篇在她的基础上加以 ...

  4. java控制台两个字符串_java控制台输入字符串

    实验要求: 1/7 1.掌握 JDK 的安装及参数配置方法,能在控制台界面使用 Java 命令进行 Java 程序的编译及运行. 2.掌握 Eclipse 软件安装方法.3.掌握在 ...... 习题 ...

  5. java保留两位小数_java使double保留两位小数的多方法 java保留两位小数

    这篇文章主要介绍了java使double类型保留两位小数的方法,大家参考使用吧 mport java.text.DecimalFormat; DecimalFormat df = new Decima ...

  6. java 求两线交点_JAVA求两直线交点和三角形内外心的编程代码

    JAVA求两直线交点和三角形内外心的编程代码 一.求两直线交点 复制代码 代码如下: class Point { double x; double y; public Point() { this.x ...

  7. java比较两个对象_java判断两个对象是否相等的方法

    java判断两个对象是否相等的方法 发布时间:2020-06-25 13:48:38 来源:亿速云 阅读:197 作者:Leah 这期内容当中小编将会给大家带来有关java判断两个对象是否相等的方法, ...

  8. java排序两个数组_java – 如何相对于彼此排序两个数组.

    由于这两个值紧密耦合在一起,我实际上会编写一个自定义类来包含信息,然后对这些类进行排序,而不是使用原始数组.这样做会让你对许多可能的错误开放. 这样可以更好地控制,数据封装以及将来可能包含哪些方法或数 ...

  9. java 多线程两种方式_JAVA多线程实现的两种方式

    java多线程实现方式主要有两种:继承Thread类.实现Runnable接口 1.继承Thread类实现多线程 继承Thread类的方法尽管被我列为一种多线程实现方式,但Thread本质上也是实现了 ...

最新文章

  1. “365算法每日学计划”:03打卡-贪心算法
  2. android8.1新功能,Android 8.1新特性:烦人的“正在后台运行”,拜拜
  3. [JSConf EU 2018] 大脑控制 Javascript
  4. js删除数组中的某个对象
  5. 两台电脑间大量数据拷贝的快捷方法
  6. 好用的工具网站!(缓慢收集中!)
  7. Java JDBC PreparedStatement类
  8. 网络 错误_微软承认Windows 10新BUG:错误显示没有网络连接
  9. 金蝶KIS专业版13.0视频教程
  10. 计算机的标点符号有哪些,电脑标点符号怎么打出来,四个电脑小技巧轻松输入各种符号...
  11. 最新上市公司商誉减值损失数据
  12. 使用SpriteAtlas打包图集并显示
  13. 抓到Netty一个隐藏很深的内存泄露Bug | 详解Recycler对象池的精妙设计与实现
  14. 全球与中国汽车真皮内饰市场竞争形势及供需策略分析报告2022-2028年版
  15. 记某环境SqlServer异地备份的坑(Server权限管控贼拉严格)
  16. 论文笔记—LeGO-LOAM: Lightweight and Ground-Optimized Lidar Odometry and Mapping on Variable Terrain
  17. layui富文本编辑器(layedit)的使用
  18. HTK的解码过程的理解又遇到瓶颈了
  19. Android实现手写板功能
  20. 别了,超人——黑曼巴!

热门文章

  1. python3连接Oracle数据库
  2. HALCON联合C#检测表面缺陷——检测缺陷原理(一)
  3. 使用jsdelivr访问github资源,为hexo站点提提速。
  4. 计算机学院新生篮球赛名字,计算机学院新生篮球赛策划书(10页)-原创力文档...
  5. GDUT22级寒假训练专题四
  6. 输出一个区间内所有的素数(质数)
  7. 【LaTeX应用】LaTeX绘图
  8. 格力蒸发式冷风扇开机鸣响故障的修复
  9. Docker安装配置Jenkins教程
  10. 常见的爬虫乱码的解决办法