小球撞墙以及反弹

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_28631165/article/details/53048353

这篇代码是看了一遍书之后写的,分享给像我一样爱好java,并在学习java 的同学们!欢迎大家指导,微笑

package com.ball;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Panel;

import javax.swing.JFrame;

/**
*@author WangKai
*@date : 2016年11月4日 下午6:01:50
*@description	小球撞墙和反弹
*/
public class HitBall {
	public static void main(String[] args) {			
		JFrame myFrame = new JFrame("**小球撞墙**");
		myFrame.setSize(700, 900);	
		
		MyPanel mv = new MyPanel();
		myFrame.add(mv);		
		Thread th = new Thread(mv);
		th.start();
		
		myFrame.getContentPane().setBackground(Color.black);	 //设置背景颜色
		
		myFrame.setVisible(true);
		myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}
}
class MyPanel extends Panel implements Runnable{
	int x=30;
	int y=60;
	int att = 0; //存储方向
	public void paint (Graphics g){  		
		g.setColor(Color.yellow);
		g.fillOval(x, y, 50, 50);		
	}

	@Override
	public void run() {
		while(true){			
			if(att==0){  //右下
				x++;
				y++;
			}
			if(att==1){	//左下
				x--;
				y++;
			}
			if(att==2){	//左上
				x--;
				y--;
			}
			if(att==3){	//右上
				x++;
				y--;
			}
			//改变飞行姿态
			if(x>635){      //窗口的宽减去小球的宽,再稍微调整大小,使小球的刚好碰到窗口的边界
				if(att==0){					
					att=1;
				}else{
					att=2;
				}
			}
			if(y>823){<span style="white-space:pre">	</span>
				if(att==1){
					att=2;
				}else{
					att=3;
				}
			}
			if(x<0){
				if(att==2){
					att=3;
				}else{
					att = 0;
				}
			}
			if(y<0){
				if(att==3){
					att=0;
				}else{
					att=1;
				}				
			}
			try{
				Thread.sleep(10);
			}catch(Exception e){}
			repaint();
		}
	}
}
	
	


猜你喜欢

转载自blog.csdn.net/qq_28631165/article/details/53048353
今日推荐