小奶包他干奶奶 2015-09-08 01:17 采纳率: 18.2%
浏览 3248

JAVA课程设计简单的俄罗斯方块,急!!!

老师提供的代码:
import java.awt.*;
import java.awt.event.*;

/**

  • Sample application of Rassia game *
  • @author Zhefan Jin
  • @version 1.00 07/05/28
    */
    class GamePanel extends Frame {

    /**

    • The attributes of class GamePanel
      */

      int cellSize =20;
      int hCellCount =30;
      int vCellCount =40;
      int sideSpace =20, bottomSpace=20, upSpace=60;

      Dimension dimFrame, dimGame;
      Point GameAreaZero;

      BlockB activeBlock;
      //End of attributes

      private Point Convert2DC(Point p){
      Point pReturn =new Point();
      pReturn.x =p.x +sideSpace;
      pReturn.y =dimFrame.height -bottomSpace -p.y;

      return pReturn;
      }

    /**

    • The constructor.
      */

      public GamePanel() {

      dimFrame =new Dimension();
      dimGame =new Dimension();
      GameAreaZero =new Point();

      dimFrame.height = upSpace +bottomSpace +vCellCount*cellSize;
      dimFrame.width = sideSpace*2 + hCellCount*cellSize;
      GameAreaZero.x = sideSpace;
      GameAreaZero.y = dimFrame.height -bottomSpace;
      dimGame.height = vCellCount*cellSize;
      dimGame.width = hCellCount*cellSize;

      activeBlock =new BlockB();

      System.out.println(dimFrame.toString());
      System.out.println(GameAreaZero.toString());

      setResizable(false);

      MenuBar menuBar = new MenuBar();
      Menu menuFile = new Menu();
      MenuItem menuFileExit = new MenuItem();
      MenuItem menuFileStart = new MenuItem();

      menuFile.setLabel("File");
      menuFileExit.setLabel("Exit");
      menuFileStart.setLabel("Start");

      // Add action listener.for the menu button
      menuFileExit.addActionListener
      (
      new ActionListener() {
      public void actionPerformed(ActionEvent e) {
      GamePanel.this.windowClosed(); //syntex?
      }
      }
      );
      menuFileStart.addActionListener
      (
      new ActionListener() {
      public
      老师的要求:

      1. 老师已提供了部分代码,你的目标是按要求完成另一部分代码,最终实现俄罗斯方块游戏的一个局部,效果如下: 图片说明

图 1
2. 具体如下:
a) 已提供的代码是Russia.java,这个文件是正确的,不要对它作任何修改。
b) 要求你生成一个新文件BlockB.java,在其中实现类BlockB。Russia.java中使用了BlockB类,如果你的编写都正确,Russia就能正常执行。
c) BlockB.java和Russia.java需放在同一个目录下。按照要求实现BlockB类后,编译这两个文件,然后运行Russia,正确情况下将出现图1效果。
3. BlockB类的要求:
a) BlockB类的数据(变量)成员是:
i. Point类的对象origin, p0, p1, p2, p3。Point类在java类库的位置是java.awt.Point。(我们在上学期的实验07中使用了Point类。实验07的题目和答案在发下来的资料中供参考。)
ii. int类型数据成员gesture,其取值范围0-3,表示4种姿态,具体说明见后。
b) BlockB类的方法(函数)成员如下:
i. BlockB()
构造函数。其中对Point类数据成员进行创建(new),并对其它成员变量赋合适的初值。
ii. void setGesture(int g)
设置姿态,包含两个动作:1)用参数g对数据成员gesture进行赋值。2)根据新的姿态,调整p0, p1, p2, p3在Block局部坐标系里的坐标值,坐标说明见后。
iii. void moveTo(int x, int y)
把数据成员origin(原点)移动到窗口坐标系(x,y)位置。
iv. Point getP0()
直接返回p0。
v. Point getP1()
直接返回p1。
vi. Point getP2()
直接返回p2。
vii. Point getP3()
直接返回p3。
4. 关于点的位置、姿态等的说明:
a) 坐标系的说明
i. 俄罗斯方块游戏中的活动块称为一个Block(块)。游戏使用两种坐标系:Block局部坐标系和游戏窗口坐标系。
ii. Block局部的坐标系定义了组成Block的4个小方块p0, p1, p2, p3之间的位置关系,如下图:
图片说明
如上图中4个点的坐标可以是:p0(0,0), p1(0,1), p2(0,2), p3(-1,0)。
iii. 一个Block在窗口中的位置由点origin确定,origin是Block坐标系的原点在窗口坐标系中的位置,如下图origin位置是(10, 10):
图片说明
b) 姿态(gesture)的说明。一个Block可以有4种姿态,分别用0、1、2、3来表示,每种姿态下点p0、p1、p2、p3的位置是不同的。

图片说明

  • 写回答

4条回答 默认 最新

  • 紫气天堂 2015-09-08 01:54
    关注

    俄罗斯方块的源代码 网上有很多,你可以上网找,下一个就好

    评论

报告相同问题?

悬赏问题

  • ¥15 删除虚拟显示器驱动 删除所有 Xorg 配置文件 删除显示器缓存文件 重启系统 可是依旧无法退出虚拟显示器
  • ¥15 vscode程序一直报同样的错,如何解决?
  • ¥15 关于使用unity中遇到的问题
  • ¥15 开放世界如何写线性关卡的用例(类似原神)
  • ¥15 关于并联谐振电磁感应加热
  • ¥60 请查询全国几个煤炭大省近十年的煤炭铁路及公路的货物周转量
  • ¥15 请帮我看看我这道c语言题到底漏了哪种情况吧!
  • ¥66 如何制作支付宝扫码跳转到发红包界面
  • ¥15 pnpm 下载element-plus
  • ¥15 解决编写PyDracula时遇到的问题