日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java小球反弹_java实现小球碰撞反弹(示例代码)

發(fā)布時間:2024/8/1 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java小球反弹_java实现小球碰撞反弹(示例代码) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

首先我們要在一個窗口里面顯示這個功能,因此引入JFrame類然后創(chuàng)建一個窗口代碼如下:

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

win.setLocation(250,100);//設(shè)置窗口位置

win.setSize(800,600);//設(shè)置窗口大小

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

win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//設(shè)置關(guān)閉退出

顯示如下:

要實現(xiàn)這個功能做基礎(chǔ)的就是要有一個小球,就像人吃飯這句話,少了人這個主角,說什么都是白說。世間所有事物都是對象,具有屬性和操作,沒有對象就沒有一切。就下來我們就來生成一個小球,這里用到Panel類,創(chuàng)建一個MyPanel類繼承于Panel類然后創(chuàng)建一個畫畫方法。代碼如下:

class MyPanel extends Panel{

public void paint(Graphics g) {

g.setColor(Color.yellow);

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

}

}

創(chuàng)建一個對象my,添加進win窗口里。代碼如下:

MyPanel my=new MyPanel();

win.add(my);

效果如下:

接下來就是讓這個小球動起來,我們讓這個小球向右移動,我們用線程和異常來實現(xiàn)。代碼如下:

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);//修改每次的橫坐標(biāo)

效果

一步一步來,接下來我們要實現(xiàn)的目標(biāo)就是讓小球碰到邊界可以反向走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;

}

效果

好裝備的差不多了,下面就開始實現(xiàn)完整功能了。

效果如下:

完整代碼:

[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);//設(shè)置窗口位置

win.setSize(800,600);//設(shè)置窗口大小

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

win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//設(shè)置關(guān)閉退出

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) {

}

}

}

}

第一次寫博客,寫的不夠詳細(xì),或者有錯的地方歡迎大家的添加和指正,大家一起交流,我是個初學(xué)者,希望不要介意。

總結(jié)

以上是生活随笔為你收集整理的java小球反弹_java实现小球碰撞反弹(示例代码)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。