版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、.:.;编程高手之路vb入门和游戏编写VB 贪吃蛇 单人版游戏(二)Private blnStartGame As Boolean 标志能否曾经开场 新游戏T游戏曾经开场Private blnPause As Boolean 标志当前能否处于暂停形状T暂停Private blnThroughWall As Boolean 标志能否为穿墙方式T可以穿墙Private blnOnKeyEvents As Boolean 标志能否可以 接纳键盘事件T可以接纳,此变量可防止 Form_KeyDown()事件反复执行Private Map_Width As Integer 地图宽度象素Private M
2、ap_Height As Integer 地图高度象素Private Map_Empty_Color 地图空白地颜色Private Map_Bomb_Color 地图炸弹颜色Private Map_Food_Color 地图食物颜色Private MapProperty() As Integer 记录地图各个网格的属性Private curEatCount As Integer 记录 每次出现奖品之前,一共吃进多少物品包括食物和炸弹,奖品不计,当奖品出现后,此变量值变为 零0,然后进入下一次统计Private curLevel As Integer 当前级别Private P1 As theP
3、layerInfo 记录Player1 的信息Private Snake_P1() As thePosition 记录蛇身坐标Private PrizePos As thePosition 记录奖品的坐标Private Record(9) As theRecord 存放前十名的 得分记录信息Option ExplicitPrivate Sub cmdHelp_Click() If blnPause = False Then Call Form_KeyDown(KEY_PAUSE, 0) 假设游戏正在进展,那么发送“暂停按键事件,暂停游戏 frmHelp.Show End Sub开场新游戏Pri
4、vate Sub cmdNewGame_Click() Dim i As Integer Randomize 重新生成随机数列 blnStartGame = Not blnStartGame If blnStartGame Then cmdNewGame.Caption = 停顿 Else cmdNewGame.Caption = 新游戏 End If 中止游戏 If blnStartGame = False Then 假设上一次的奖品还没有消逝以 PrizeRemain 0 为标志,就先去除旧的奖品,然后才显示新的奖品 If PrizeRemain 0 Then Call ShowPrize
5、(False) picDisplay.Cls P1.Score = 0 玩家的初始分数 P1.Food = 0 P1.Bomb = 0 curEatCount = 0 PrizeRemain = 0 blnPause = False lblPause.Visible = False lblScore.Caption = P1.Score lblFoodCount.Caption = P1.Food lblBombCount.Caption = P1.Bomb P1.blnGameOver = True HscrLevel.Enabled = True tmrMove.Enabled = Fal
6、se Exit Sub End If blnThroughWall = True 穿墙方式 blnOnKeyEvents = True 暂时运用默许填充色 Map_Bomb_Color = BOMB_COLOR Map_Empty_Color = EMPTY_COLOR Map_Food_Color = FOOD_COLOR P1.BodyColor = BODY_COLOR P1.HeadColor = HEAD_COLOR 地图初始化 ReDim MapProperty(MAX_COL_INDEX, MAX_ROW_INDEX) Map_Width = (MAX_COL_INDEX + 1
7、) * MAP_SCALE Map_Height = (MAX_ROW_INDEX + 1) * MAP_SCALE picDisplay.Cls picDisplay.Width = Map_Width + 2 picDisplay.Height = Map_Height + 2 picDisplay.Line (0, 0)-Step(Map_Width, Map_Height), Map_Empty_Color, BF FoodCount_AtOneTime = 2 地图上同时存在的 食物数量 BombCount_AtOneTime = 1 地图上同时存在的 炸弹数量 EatCountPe
8、rShowPrize = 5 设置 蛇每吃进多少物品包括食物和炸弹,奖品不计才显示一次奖品 curLevel = HscrLevel.Value AddScorePerFood = curLevel 每吃进一个 食物,所添加的分数当前的级别值 AddScorePerBomb = -curLevel * 2 每吃进一个 炸弹,所扣掉的分数 P1.Score = Abs(AddScorePerBomb) + 1 玩家的初始分数每吃进一个 炸弹,所扣掉的分数1 P1.Food = 0 P1.Bomb = 0 PrizeRemain = 0 P1.blnGameOver = False lblScor
9、e.Caption = P1.Score lblFoodCount.Caption = P1.Food lblBombCount.Caption = P1.Bomb 初始化P1蛇身 ReDim Snake_P1(START_SNAKE_LENGTH) For i = 0 To UBound(Snake_P1) 设定蛇身各段的起始位置 Snake_P1(i).X = MAX_COL_INDEX - UBound(Snake_P1) + i Snake_P1(i).Y = MAX_ROW_INDEX 初始化挪动方向 P1.X_Way = -1 P1.Y_Way = 0 MapProperty(Sn
10、ake_P1(i).X, Snake_P1(i).Y) = MAP_SNAKE picDisplay.Line (Snake_P1(i).X * MAP_SCALE, Snake_P1(i).Y * MAP_SCALE)-Step(MAP_SCALE, MAP_SCALE), BODY_COLOR, BF Next 运用蛇头颜色 重新绘画蛇头 picDisplay.Line (Snake_P1(0).X * MAP_SCALE, Snake_P1(0).Y * MAP_SCALE)-Step(MAP_SCALE, MAP_SCALE), HEAD_COLOR, BF 放置食物 For i =
11、1 To FoodCount_AtOneTime Call AddFood Next 放置炸弹 For i = 1 To BombCount_AtOneTime Call AddBomb Next lblPause.Visible = False lblScore.Caption = P1.Score lblFoodCount.Caption = P1.Food lblBombCount.Caption = P1.Bomb P1.blnGameOver = False HscrLevel.Enabled = False 游戏进展期间不能改动级别 tmrMove.Enabled = TrueEn
12、d Sub显示得分榜Private Sub cmdShowScoreList_Click() If blnPause = False Then Call Form_KeyDown(KEY_PAUSE, 0) 假设游戏正在进展,那么发送“暂停按键事件,暂停游戏 frmScoreList.Show End SubPrivate Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) If P1.blnGameOver Or blnStartGame = False Or blnOnKeyEvents = False Then Exit Sub
13、以下情况游戏终了、游戏还没有开场、禁用击键事件不接纳按键操作。 按“Numpad 5键暂停/继续 If KeyCode = KEY_PAUSE Then blnPause = Not blnPause lblPause.Visible = blnPause tmrMove.Enabled = Not blnPause Exit Sub End If If blnPause Then Exit Sub 在暂停形状下不接受“ESC外的其它按键 Select Case KeyCode Case KEY_LFUP blnOnKeyEvents = False If P1.X_Way 0 Then P1
14、.X_Way = 0 P1.Y_Way = -1 ElseIf P1.Y_Way 0 Then P1.X_Way = -1 P1.Y_Way = 0 End If Case KEY_LFDN blnOnKeyEvents = False If P1.X_Way 0 Then P1.X_Way = 0 P1.Y_Way = 1 ElseIf P1.Y_Way 0 Then P1.X_Way = -1 P1.Y_Way = 0 End If Case KEY_RTUP blnOnKeyEvents = False If P1.X_Way 0 Then P1.X_Way = 0 P1.Y_Way =
15、 -1 ElseIf P1.Y_Way 0 Then P1.X_Way = 1 P1.Y_Way = 0 End If Case KEY_RTDN blnOnKeyEvents = False If P1.X_Way 0 Then P1.X_Way = 0 P1.Y_Way = 1 ElseIf P1.Y_Way 0 Then P1.X_Way = 1 P1.Y_Way = 0 End If 当蛇以 程度 方向挪动时,LF 和 RT 按键无效 Case KEY_LF blnOnKeyEvents = False If P1.X_Way = 0 Then P1.X_Way = -1 P1.Y_Way = 0 End If Case KEY_RT blnOnKeyEvents = False If P1.X_Way = 0 Then P1.X_Way = 1 P1.Y_Way = 0 End If 当蛇以 垂直 方向挪动时,UP 和 DN 按键无效 Case KEY_UP blnOnKeyEvents = False If P1.Y_Way = 0 Then P1.X_Way = 0
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度程序员入职技术支持与服务合同4篇
- 「放心签」二零二五年度环保工程转让合同书模板3篇
- 二零二五年度大学生实习项目安全管理及劳动合同4篇
- 2025标识标牌行业节能减排技术改造合同2篇
- 2025版个人二手房交易合同范本(含税费指导)4篇
- 二零二五年度高品质住宅区围墙施工合同4篇
- 2025年度大连生猪养殖与电商平台合作合同协议4篇
- 2025年度出国派遣文化演出出国派遣劳务合同范本4篇
- 二零二四小食品原材料采购与价格波动风险管理合同2篇
- 2025版住宅小区消防通道绿化管理与维护合同3篇
- 化学-河南省TOP二十名校2025届高三调研考试(三)试题和答案
- 智慧农贸批发市场平台规划建设方案
- 2023年水利部黄河水利委员会招聘考试真题
- Python编程基础(项目式微课版)教案22
- 半导体工艺用胶带全球市场、份额、市场规模、趋势、行业分析报告2024-2030年
- 建筑施工中常见的安全问题及解决方法
- 近五年重庆中考物理试题及答案2023
- 乳腺导管原位癌
- 冷库管道应急预案
- 《学习教育重要论述》考试复习题库(共250余题)
- 网易云音乐用户情感画像研究
评论
0/150
提交评论