qcode
  • 创作工场专业版,一问多答!更智能、更完整、更原创
  • 这是一个超强内容创作平台,它会写文章、做设计、绘图、敲代码,有问必答!
🔥点击使用-高级专业版🔥

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

时间2023-03-27 23:04:36 提问来自 甘肃省兰州市 的网友 分类创作 浏览433
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

点击这里,进行内容创作

创作工场 免责声明:
以上内容除特别注明外均来源于网友提问,创作工场回答,未经许可,严谨转载。
点击这里>>使用🔥专业版,更聪明、更完整、更原创!

上一篇 气温高的夏季,设施内芫荽深液流栽培时,根系腐烂,造成该现象的原因有哪些? 下一篇 建筑工程项目的成本控制和效益分析的论文结束语