xiaoing.com©

开花即结果 提问即答案

用java写一份俄罗斯方块的代码
原始问题:

用java写一份俄罗斯方块的代码

import java.awt.Color;
import java.awt.Graphics;
import java.util.*;
/**

  • Tetris 俄罗斯方块游戏
    */

public class Tetris {

// 方块数组,每个元素代表一个小方块,1表示有方块,0表示没有 
private int[][] blockArray = new int[20][10];  

// 方块的颜色数组,存储每个小方块的颜色 
private Color[][] colorArray = new Color[20][10];  

// 当前正在下落的方块对象 
private Block currentBlock = null;  

// 生成随机数对象 
private Random random = new Random();  

/** 俄罗斯方块构造函数 */  
public Tetris() {                            // 创建Tetris对象时创建一个新的Block对象作为当前正在下落的Block对象。                         // 这里只是创造了一个Block,并不会显示出来。      currentBlock = new Block(); }     /** 画图函数 */      public void draw(Graphics g) {         for (int i=0; i<20; i++) {             for (int j=0; j<10; j++) {                 if (blockArray[i][j] == 1) {                     g.setColor(colorArray[i][j]);                     g.fillRect(j*30, i*30, 30, 30);                 }             }         }          if (currentBlock != null) {             currentBlock.drawMe(g);         }      }       /** 方向键处理函数 */      public void keyPressed(int keyCode) {         switch (keyCode) {            case 37:                currentBlock.moveLeft();                break;            case 38:                currentBlock.turnRight();                break;            case 39:                currentBlock.moveRight();                break;            case 40:                dropDown();               break;}        repaintGamePanel() ;      }       /** 向下加速处理函数 */      public void keyReleased(int keyCode) {}       /** 重画游戏界面函数 */      public void repaintGamePanel() {}       /** 方向键处理函数 */      public void dropDown(){          while (!currentBlcokIsAtBottom())           moveCurrentBlcokOneStepDown() ;           cleanFullLineAndMoveAboveLinesDown() ;           createNewCurrentBlcok() ;        repaintGamePanel() ;}       /** 判断当前正在运动的block是否到底部了*/        private boolean currentBlcokIsAtBottom(){              return true/false;}       /** 让当前block往低端运动一格*/        private void moveCurrentBlcokOneStepDown(){              ...}       /** 消去已完全占满的行并将上端所有行往低端迁移一格*/        private void cleanFullLineAndMoveAboveLinesDown(){              ...}       /*** 创造新block作当前block*/        private void createNewCurrentBlcok(){              ...}     /*** Block内部定义 ***/     class Block{          // 定义7中变化情况          int [][] shapeTable = {{...},{...},...};                  // block中心位子          int centerX, centerY ;                  // block当前变化情况          int shapeIndex=0 ;                  // block所有小方格位子以及其颜色           ArrayList <Point> pointList = new ArrayList<Point> ();           ArrayList <Color> colorList = new ArrayList<Color> ();                      /*** 构造函数 ***/         public Block (){             centerX=4 ;centerY=0 ;shapeIndex=randomShapeIndex () ;createPointsByShapeIndex () ;createColorsByShapeIndex ();}                      /*** 释放旋转 ***/         public turnRight(){             shapeIndex=(shapeIndex+1 ) % 7 ;;createPointsByShapeIndex () ;;createColorsByShapeIndex ();}                      /*** 移动 ***/         pubic moveLeft (){             centerX-- ;;if (! isValidPosition ())centerX++ ;;else createPointsByShapeIndex () ;;createColorsByShape
用java写一份俄罗斯方块的代码
https://www.xiaoing.com/zhidao/4023.html
AI / 模型DeepSeek
时间 / DATEMarch 27, 2023, 11:04 PM
语言zh-CN
IP / 区域 甘肃 兰州