VisualFreeBasic游戏趣味编程_10.1_红色方块的表示与绘制

2026-1-22 / 0 评论 / 114 阅读

十字消除游戏画面由很多小方块组成,首先进行宏定义:

#define BlockSize 19'小方块的边长
#define RowNum 13 '游戏画面一共RowNum行小方块
#define ColNum 21 '游戏画面一共ColNum列小方块

定义小方块结构体:

Type Block ' 小方块结构体
   As Long x, y ' 小方块在画面中的x,y坐标
   As Long i, j ' 小方块在二维数组中的i,j下标
End Type

利用Block结构体类型,定义二维数组blocks全局变量,存储游戏画面中所有小方块的信息:

Dim Shared blocks(RowNum -1, ColNum -1) As Block ' 构建二维数组,存储所有数据

在startup()中初始化blocks,将其设置为红色填充、白色线条;show()函数中绘制出所有的小方块,显示效果如图10-2所示。

#define BlockSize 19 '小方块的边长
#define RowNum 13    '游戏画面一共RowNum行小方块
#define ColNum 21    '游戏画面一共ColNum列小方块
Type Block ' 小方块结构体
   As Long x, y ' 小方块在画面中的x,y坐标
   As Long i, j ' 小方块在二维数组中的i,j下标
End Type
'全局变量定义
Dim Shared blocks(RowNum -1, ColNum -1) As Block ' 构建二维数组,存储所有数据

Sub startup() '初始化函数
   Dim As Long i, j
   '对blocks二维数组进行初始化
   For i = 0 To RowNum -1
      For j = 0 To ColNum -1
         blocks(i, j).x = j * BlockSize '小方块左上角的坐标
         blocks(i, j).y = i * BlockSize
         blocks(i, j).i = i '存储当前小方块在二维数组中的下标
         blocks(i, j).j = j
      Next
   Next
End Sub

Sub show(gg As yGDI) '绘制函数
   gg.Cls BGR(220, 220, 220) '灰色背景。
   gg.Pen 1, BGR(255, 255, 255) ' 白色线条
   gg.Brush BGR(255, 0, 0) '设置填充颜色
   Dim As Long i, j
   ' 以对应的颜色、坐标画出所有的小方块
   For i = 0 To RowNum -1
      For j = 0 To ColNum -1
          gg.DrawFrame blocks(i, j).x,blocks(i, j).y, BlockSize,BlockSize
      Next
   Next

   gg.Redraw
End Sub

Sub updateWithoutInput() '与输入无关的更新

   Sleep 10 '暂停若干毫秒
End Sub
Sub updateWithInput(hWndForm As hWnd, gg As ygdi) ' 和输入有关的更新

End Sub
Sub 游戏执行过程(hWndForm As hWnd)
   Dim gg As yGDI = hWndForm
   startup() '初始化
   Do '循环执行
      show(gg) '绘制
      updateWithInput(hWndForm, gg)
      updateWithoutInput()
   Loop

End Sub

评论一下?

OωO
取消