• 大小: 103KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-16
  • 语言: 其他
  • 标签: 课程设计  

资源简介

一个超级强悍的游戏,可以帮助你们做课程设计用的,觉得可以,当年我也是这样过来的,老师给很高分!

资源截图

代码片段和文件信息

import java.awt.*;
import java.awt.event.*;
import java.util.Random;
import javax.swing.Timer;
public class PinBall
{
//桌面宽度
private final int TABLE_WIDTH = 300;
//桌面高度
private final int TABLE_HEIGHT = 400;
//球拍的垂直位置
private final int RACKET_Y = 340;
//球拍高度
private final int RACKET_HEIGHT = 20;
//球拍宽度
private final int RACKET_WIDTH = 60;
//球的大小
private final int BALL_SIZE = 16;
//实例化一个窗口
private frame f = new frame(“zzc*弹球游戏“);
//实例化一个随机数生成器
Random rand = new Random();
//小球的纵向运动数度
    private int ySpeed = 10;
 //返回一个-0.5到0.5之间的比率用控制小球运动方向
private double xyRate = rand.nextDouble() - 0.5;
//这个横向速度在-10到10之间,产生左右摆动运动效果
private int xSpeed = (int)(ySpeed*xyRate*2);
//小球开始的横坐标位置,200表示产生0到100之间的随机数
private int ballX = rand.nextInt(200)+20;
//小球开始的纵坐标位置
private int ballY = rand.nextInt(10)+20;
//球拍开始时的横坐标位置
private int racketX = rand.nextInt(200);
//实力化一个画布工具,集成Canvas类
private MyCanvas tableArea = new MyCanvas();
//保存需要绘制图形的字符串属性
private String shape = ““;
//声明一个时间变量
Timer timer;
//表示游戏是否结束
private boolean isLose = false;
public void init()
{
//定义画布大小
   tableArea.setPreferredSize(new Dimension(TABLE_WIDTHTABLE_HEIGHT));
   //添加画布到窗口
   f.add(tableArea);
   //实例化一个键盘监听事件适配器
   KeyAdapter keyProcessor = new KeyAdapter()
   {
    //重写适配器里面的按下某键盘方法
    public void keyPressed(KeyEvent ke)
    {
     //按下键盘左键时
     if(ke.getKeyCode()==KeyEvent.VK_LEFT)
     {
      //球拍左边框不能出画布的左边框
      if(racketX > 0)
      //按一左键次向左移动10个像素
       racketX -=10;
     }
     //按下键盘右键时
     if(ke.getKeyCode()==KeyEvent.VK_RIGHT)
     {
      //球拍右边框不能出画布的右边框
      if(racketX < TABLE_WIDTH - RACKET_WIDTH)
      //按一次右键移动向右移动10个像素
       racketX +=10;
     }
    } 
   };
   //给窗口添加键盘监听器
   f.addKeyListener(keyProcessor);
   //给画布添加键盘监听器
   tableArea.addKeyListener(keyProcessor);
   //这里是实例化了一个监听接口
   ActionListener taskPerformer = new ActionListener()
   {
    //重写这个接口里面的方法,判断小球的位置
    public void actionPerformed(ActionEvent evt)
    {
     //保证小球横向上在画布之内运动
     if(ballX<=0 || ballX>=TABLE_WIDTH-BALL_SIZE)
     {
      //触发反方向运动
      xSpeed = -xSpeed;
     }
     //出了球拍的可击打范围
     if(ballY>=RACKET_Y-BALL_SIZE&&(ballXracketX+RACKET_WIDTH))
     {
      //停止对监听器的触发
      timer.stop();
      
      isLose=true;
      //调用画布的重绘方法
      tableArea.repaint();//调用画布的重绘方法
     }
     //小球在球拍之内,而其到达球拍的高度
     else if(ballY<=0||(ballY>=RACKET_Y-BALL_SIZE&&ballY>racketX&&ballX<=racketX+RACKET_WIDTH))
     {
      //上下方向改变,小球反弹
      ySpeed=-ySpeed;
     }
     //小球的坐标在纵向上增加
     ballY+=ySpeed;
     //小球的坐标在横向上的增加
     ballX+=xSpeed;
     //调用画布的重绘方法3
     tableArea.repaint();
    }
   };
   timer = new Timer(100taskPerformer);//每隔0.1秒运行一次监听器
   timer.start();//计时器开始运行
   f.addWindowListener(new MyListener());//关闭窗口事件
   f.pack();//设置窗口最佳大小
   f.setVisible(true);//显示窗口

class MyListener extends WindowAdapter//关闭窗口的类
{
   public void windowClosing(Window

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       4560  2009-06-06 18:09  课程设计\PinBall.java

     文件     160256  2009-06-06 18:11  课程设计\ZZC.ppt

     目录          0  2009-06-06 18:11  课程设计

----------- ---------  ---------- -----  ----

               164816                    3


评论

共有 条评论