当前位置:编程学习 > JAVA >>

java大神现场求救

将rar文件解包,有如下内容:a) Russia.javab)      目标:按照要求完成部分程序,实现俄罗斯方块游戏的一个局部,效果如下: 图13.        关于游戏的一些说明:a)  坐标系的说明                        i. 俄罗斯方块游戏中的活动块称为一个Block(块)。游戏使用两种坐标系:Block局部坐标系和游戏窗口坐标系。       
ii. Block局部的坐标系定义了组成Block的4个小方块p0, p1, p2, p3之间的位置关系,如下图: 如上图中4个点的坐标可以是:p0(0,0), p1(1,0), p2(0,1), p3(-1,0)。                     
iii. 一个Block在窗口中的位置由点origin确定,origin是Block坐标系的原点在窗口坐标系中的位置,如下图: b)  姿态(gesture)的说明。一个Block可以有4种姿态,分别用0、1、2、3来表示,每种姿态下点p0、p1、p2、p3的位置是不同的。 
4.  相关的java文件和编译执行顺序:a)  已提供了Russia.java,这个文件可以通过编译。不要修改此文件。b) 要求生成一个新的BlockA.java文件,在其中实现类BlockA。Russia.java中使用了BlockA。c)   BlockA.java和Russia.java需放在同一个目录下。按照要求实现BlockA类,编译通过。运行Russia.java,正确情况下将出现图1效果。d)  俄罗斯方块程序有多种块(Block),比如长条和田字形。你可自行选择一种作为BlockA。只要p0,p1,p2,p3位置正确,都可以运行。5.   BlockA类的说明:a)    数据成员如下:                        
i.   Point类的对象origin, p0, p1, p2, p3。Point类在java类库的位置是java.awt.Point。                      
ii.    int类型数据成员gesture,取值范围0-3,表示4种姿态。b)       BlockA类的方法成员如下:       i.     BlockA()构造函数。对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。

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;
     
     BlockA 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 BlockA();
     
     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 void actionPerformed(ActionEvent e) {
                    System.out.println("Game Start");
                }
            }
        ); 
   


   menuFile.add(menuFileStart);
        menuFile.add(menuFileExit);
        menuBar.add(menuFile);

        
        setTitle("Rassia");
        setMenuBar(menuBar);
        setSize(dimFrame);
        
        // Add window listener.
        this.addWindowListener
        (
            new WindowAdapter() {
                public void windowClosing(WindowEvent e) {
                    GamePanel.this.windowClosed();
                }
            }
        );  
    }
    
    
    /**
     * Shutdown procedure when run as an application.
     */
    protected void windowClosed() {
     
     // TODO: Check if it is safe to close the application
     
        // Exit application.
        System.exit(0);
    }
    

    /**
     * draw a cell at line i and column j with bottom-left being origin
     */
private void drawCell(int i, int j, Graphics g){
Point p =new Point();
p = Convert2DC(new Point((i-1)*cellSize, j*cellSize)); 
g.drawRect(p.x, p.y, cellSize, cellSize);
}


    /**
     * draw a cell at line i and column j with bottom-left being origin
     */
private void drawBlock(BlockA b, Graphics g){

Point p;
p =b.getP0();
drawCell(b.origin.x +p.x, b.origin.y+p.y, g); 

p =b.getP1();
drawCell(b.origin.x +p.x, b.origin.y+p.y, g); 

p =b.getP2();
drawCell(b.origin.x +p.x, b.origin.y+p.y, g); 

p =b.getP3();
drawCell(b.origin.x +p.x, b.origin.y+p.y, g); 

}


    /**
     * paint the panel
     */
    public void paint(Graphics g)
{
g.clearRect(0,0, this.getWidth(), this.getHeight());

//draw out bound of game area
Point p= Convert2DC(new Point (0,dimGame.height));
g.drawRect(p.x, p.y, dimGame.width, dimGame.height);

//just test things
drawCell(1,1,g);
// drawCell(hCellCount,vCellCount,g);

//draw the blocks
activeBlock.moveTo(10,15);
activeBlock.setGesture(0);
drawBlock(activeBlock, g);

activeBlock.moveTo(10,25);
activeBlock.setGesture(1);
drawBlock(activeBlock, g);

activeBlock.moveTo(25,15);
activeBlock.setGesture(2);
drawBlock(activeBlock, g);

activeBlock.moveTo(25,25);
activeBlock.setGesture(3);
drawBlock(activeBlock, g);
}    
}

 /**
 * AWT Sample application
 *
 * @author 
 * @version 1.00 07/05/28
 */
public class Rassia {
    
    public static void main(String[] args) {
        // Create application frame.
        GamePanel panel = new GamePanel();
        
        // Show frame
        panel.setVisible(true);
    }
}
Java
补充:Java ,  Java相关
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,