零基础开发桌球小游戏项目(激发编程兴趣)@ycy
第一次写博客,希望通过写博客给自己一种约束,学习不能"三天打鱼两天晒网",坚持编程,坚持刷题!
需要的图片
画窗口的方法
//画窗口的方法
public void paint(Graphics g){
g.drawImage(desk, 0, 0, null);
g.drawImage(ball, (int)x,(int)y,null);
x =x+10*Math.cos(degree); //数学问题:三角函数
y =y+10*Math.sin(degree);
//碰到上下边界问题
if(y>500-40-30||y<40+40)
{
degree =-degree; //进行X轴翻转
//500是窗口高度,40是桌子边框,30是球直径;最后一个40是标题栏的高度
}
//碰到左右边界问题处理
if(x<40||x>856-40-30)
{
degree =3.14 -degree; //进行Y轴翻转
}
}
源代码
import java.awt.*;
import javax.swing.*;
public class BallGame extends JFrame{
Image ball =Toolkit.getDefaultToolkit().getImage("images/ball.png");
Image desk =Toolkit.getDefaultToolkit().getImage("images/desk.jpg");
double x=100; //小球的横坐标
double y=100; //小球的纵坐标
double degree =3.14/3; //弧度.此处就是:60度
//画窗口的方法
public void paint(Graphics g){
g.drawImage(desk, 0, 0, null);
g.drawImage(ball, (int)x,(int)y,null);
x =x+10*Math.cos(degree); //数学问题:三角函数
y =y+10*Math.sin(degree);
//碰到上下边界问题
if(y>500-40-30||y<40+40)
{
degree =-degree; //进行X轴翻转
//500是窗口高度,40是桌子边框,30是球直径;最后一个40是标题栏的高度
}
//碰到左右边界问题处理
if(x<40||x>856-40-30)
{
degree =3.14 -degree; //进行Y轴翻转
}
}
//窗口加载
void launchFrame()
{
setSize(856,500);
setLocation(50,50);
setVisible(true);
//重画窗口,每秒画25次
while(true)
{
repaint();
try{
Thread.sleep(40); //40ms , 1秒=1000毫秒 一秒画25次窗口
}catch(Exception e)
{
e.printStackTrace();
}
}
}
public static void main(String[] args)
{
System.out.println("这个小游戏项目让大家体验编程的快感!");
BallGame game=new BallGame();
game.launchFrame();
}
}