c语言俄罗斯方块项目文档,c语言程序 俄罗斯方块

最近在学习JAVA,就学参考学着写了一个俄罗斯方块,代码有详细注释,这里就不多做说明了。

可以用键盘,空格控制,或者用界面上的按钮。

1import java.awt.*;

2import java.awt.event.*;

3import javax.swing.*;

4import javax.swing.event.*;

5

6class Block implements Runnable// 方块类

7{

8 static final int type = 7, state = 4;

9

10 static final int[][] patten = { // 16进制代表每种方块

11 { 0x0f00, 0x4444, 0x0f00, 0x4444 },// 长条

12 { 0x6600, 0x6600, 0x6600, 0x6600 },// 正方块

13 { 0x04e0, 0x0464, 0x00e4, 0x04c4 },// 三角

14 { 0x08e0, 0x0644, 0x00e2, 0x044c },// 弯折一下,1、3,1左

15 { 0x02e0, 0x0446, 0x00e8, 0x0c44 },// 弯折一下,1、3,1右

16 { 0x0462, 0x006c, 0x0462, 0x006c },// 弯折两下,1、2、1,1左上;1右下

17 { 0x0264, 0x00c6, 0x0264, 0x00c6 } // 弯折两下,1、2、1,1右上;1左下

18 };

19

20 private int blockType = -1; // 方块类型,7种,大小范围0-6

21

22 private int blockState;// 方块状态,4种,大小范围0-3

23

24 private int row, col; // 方块所在的行数,列数

25

26 private int oldRow, oldCol; // 记录方块变化前所在的行数,列数

27

28 private int oldType = -1, oldState; // 记录方块变化前的类型和状态

29

30 private int isfall = 1; // 标记若画,画成什么颜色的,

31

32 // 1表示可以下落,画为红色;0表示不可下落,画为蓝色

33

34 private boolean end = false;// 结束标记,为true时表示结束

35

36 LeftShowCanvas lsc;

37

38 public Block(LeftShowCanvas lsc)

39 {

40 this.lsc = lsc;

41 row = 0;

42 col = 3;

43 oldRow = row;

44 oldCol = col;

45 }

46

47 public void reInit() // 一个方块无法下落后,重新初始化

48 {

49 blockType = -1;

50 isfall = 1;

51 }

52

53 public void reInitRowCol() // 初始化方块起始点

54 {

55 row = 0;

56 col = 3;

57 }

58

59 public void run() // 下落线程

60 {

61 lsc.requestFocusInWindow(); // 获得焦点

62 while (!end)

63 {

64 int blocktype = (int) (Math.random() * 100) % 7;

65 drawBlock(blocktype);

66 do

67 {

68 try

69 {

70 Thread.sleep(500); // 控制下落速度

71 } catch (InterruptedException e)

72 {

73

74 }

75 } while (fallMove()); // 下落

76 for (int j = 0; j < lsc.maxcols; j++)

77 // 判断是否结束

78 if (lsc.unitState[3][j] == 2)

79 end = true;

80 }

81 }

82

83 public synchronized void draw

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值