服务器之家

服务器之家 > 正文

易语言用画板制作围猫游戏的源码

时间:2022-02-24 16:04     来源/作者:易语言源码教程

DLL命令表

?
1
2
3
4
5
6
.版本 2
.DLL命令 系统关于对话框, , , "ShellAboutA"
  .参数 窗口句柄, 整数型
  .参数 应用程序标题, 文本型
  .参数 其他信息, 文本型
  .参数 图标句柄, 整数型

图片资源表

?
1
2
3
4
5
.版本 2
.图片 圆点白色
.图片 圆点猫
.图片 圆点墙
.图片 圆点叉

围猫游戏

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
.版本 2
.程序集 窗口程序集_启动窗口
.程序集变量 圆点状态, 整数型, , "121", 0空白1围墙2陷阱
.程序集变量 猫位置, 整数型
.程序集变量 游戏状态, 整数型, , , 0未开始1正在游戏2游戏结束
.程序集变量 移动路径, 整数型, , "0", 猫的逃跑路径
.程序集变量 圆点步数, 整数型, , "121", 计算逃跑路径时使用,猫到每一点位置的距离
.子程序 新建游戏
.局部变量 横向计次, 整数型
.局部变量 纵向计次, 整数型
.局部变量 位置顶边, 整数型
.局部变量 位置左边, 整数型
.局部变量 临时整数, 整数型
.局部变量 计次变量, 整数型
.局部变量 当前位置, 整数型
' 重置游戏状态
.计次循环首 (121, 临时整数)
  圆点状态 [临时整数] = 0
.计次循环尾 ()
游戏状态 = 1
猫位置 = 61
清除数组 (移动路径)
' 画出背景
临时整数 = 载入图片 (#圆点白色)
.计次循环首 (11, 纵向计次)
  .计次循环首 (11, 横向计次)
    位置左边 = (横向计次 - 1) × 48
    .如果真 (纵向计次 % 2 = 0)
      位置左边 = 位置左边 + 24
    .如果真结束
    位置顶边 = (纵向计次 - 1) × 40
    画板1.画图片 (临时整数, 位置左边, 位置顶边, , , -取颜色值 (128, 128, 128))
  .计次循环尾 ()
.计次循环尾 ()
卸载图片 (临时整数)
' 画出猫
临时整数 = 载入图片 (#圆点猫)
纵向计次 = (猫位置 - 1) \ 11
横向计次 = 猫位置 - 纵向计次 × 11
位置左边 = (横向计次 - 1) × 48
.如果真 (纵向计次 % 2 = 1)
  位置左边 = 位置左边 + 24
.如果真结束
位置顶边 = 纵向计次 × 40
画板1.画图片 (临时整数, 位置左边, 位置顶边, , , -取颜色值 (128, 128, 128))
卸载图片 (临时整数)
' 画出随机9个×
临时整数 = 载入图片 (#圆点叉)
.判断循环首 (计次变量 < 9)
  置随机数种子 ()
  当前位置 = 取随机数 (1, 121)
  .如果真 (当前位置 ≠ 猫位置 且 圆点状态 [当前位置] = 0)
    计次变量 = 计次变量 + 1
    圆点状态 [当前位置] = 2
    纵向计次 = (当前位置 - 1) \ 11
    横向计次 = 当前位置 - 纵向计次 × 11
    位置左边 = (横向计次 - 1) × 48
    .如果真 (纵向计次 % 2 = 1)
      位置左边 = 位置左边 + 24
    .如果真结束
    位置顶边 = 纵向计次 × 40
    画板1.画图片 (临时整数, 位置左边, 位置顶边, , , -取颜色值 (128, 128, 128))
  .如果真结束
.判断循环尾 ()
卸载图片 (临时整数)
.子程序 _画板1_鼠标左键被按下, 逻辑型
.参数 横向位置, 整数型
.参数 纵向位置, 整数型
.参数 功能键状态, 整数型
.局部变量 横坐标, 整数型
.局部变量 纵坐标, 整数型
.局部变量 临时整数, 整数型
.局部变量 位置顶边, 整数型
.局部变量 位置左边, 整数型
.局部变量 位置序号, 整数型
.如果真 (游戏状态 ≠ 1)
  返回 ()
.如果真结束
.如果真 (画板1.取点 (横向位置, 纵向位置) = #灰色)
  返回 ()
.如果真结束
纵坐标 = 纵向位置 \ 40
.如果 (纵坐标 % 2 = 1)
  横坐标 = (横向位置 + 24) \ 48 - 1
.否则
  横坐标 = 横向位置 \ 48
.如果结束
' 计算点击序号
位置序号 = 横坐标 + 纵坐标 × 11 + 1
' 判断是否可以围墙
.如果真 (位置序号 = 猫位置)
  返回 ()
.如果真结束
.如果真 (圆点状态 [位置序号] > 0)
  返回 ()
.如果真结束
' 画出围墙
临时整数 = 载入图片 (#圆点墙)
位置左边 = 横坐标 × 48
.如果真 (纵坐标 % 2 = 1)
  位置左边 = 位置左边 + 24
.如果真结束
位置顶边 = 纵坐标 × 40
画板1.画图片 (临时整数, 位置左边, 位置顶边, , , )
卸载图片 (临时整数)
' 修改位置状态
圆点状态 [位置序号] = 1
' 移动猫
移动猫 ()
' 检查游戏状态
检查状态 ()
.子程序 移动猫
.局部变量 横坐标, 整数型
.局部变量 纵坐标, 整数型
.局部变量 位置左边, 整数型
.局部变量 位置顶边, 整数型
.局部变量 临时整数, 整数型
' 寻找逃跑路径
寻找路径 ()
' 移动路径
.如果真 (取数组成员数 (移动路径) > 1 且 游戏状态 = 1)
  ' 删除猫
  临时整数 = 载入图片 (#圆点白色)
  纵坐标 = (猫位置 - 1) \ 11
  横坐标 = 猫位置 - 纵坐标 × 11
  位置左边 = (横坐标 - 1) × 48
  .如果真 (纵坐标 % 2 = 1)
    位置左边 = 位置左边 + 24
  .如果真结束
  位置顶边 = 纵坐标 × 40
  画板1.画图片 (临时整数, 位置左边, 位置顶边, , , -取颜色值 (128, 128, 128))
  卸载图片 (临时整数)
  ' 移动猫位置
  猫位置 = 移动路径 [2]
  删除成员 (移动路径, 1, )
  ' 画出猫
  临时整数 = 载入图片 (#圆点猫)
  纵坐标 = (猫位置 - 1) \ 11
  横坐标 = 猫位置 - 纵坐标 × 11
  位置左边 = (横坐标 - 1) × 48
  .如果真 (纵坐标 % 2 = 1)
    位置左边 = 位置左边 + 24
  .如果真结束
  位置顶边 = 纵坐标 × 40
  画板1.画图片 (临时整数, 位置左边, 位置顶边, , , -取颜色值 (128, 128, 128))
  卸载图片 (临时整数)
.如果真结束
.子程序 检查路径, , , 无用
.局部变量 计次变量, 整数型
.局部变量 是否可用, 逻辑型
.如果 (取数组成员数 (移动路径) = 0)
  寻找路径 ()
.否则
  ' 判断现有路径是否还可用
  是否可用 = 真
  .计次循环首 (取数组成员数 (移动路径), 计次变量)
    .如果真 (圆点状态 [移动路径 [计次变量]] > 0)
      是否可用 = 假
      跳出循环 ()
    .如果真结束
  .计次循环尾 ()
  .如果真 (是否可用 = 假)
    寻找路径 ()
  .如果真结束
.如果结束
.子程序 寻找路径
.局部变量 当前路径, 整数型, , "0"
.局部变量 最短路径, 整数型, , "0"
.局部变量 边缘位置, 整数型, , "40"
.局部变量 计次变量, 整数型
.局部变量 是否完成, 逻辑型
.局部变量 临时文本, 文本型
.局部变量 出口位置, 整数型
清除数组 (移动路径)
' 计算边缘位置
.计次循环首 (11, 计次变量)
  边缘位置 [计次变量] = 计次变量
.计次循环尾 ()
.计次循环首 (9, 计次变量)
  边缘位置 [计次变量 + 11] = 计次变量 × 11 + 1
.计次循环尾 ()
.计次循环首 (9, 计次变量)
  边缘位置 [计次变量 + 20] = (计次变量 + 1) × 11
.计次循环尾 ()
.计次循环首 (11, 计次变量)
  边缘位置 [计次变量 + 29] = 计次变量 + 110
.计次循环尾 ()
' 重置步数
.计次循环首 (121, 计次变量)
  圆点步数 [计次变量] = 99
.计次循环尾 ()
圆点步数 [猫位置] = 0
' 递归计算猫位置到每个位置的步数
计算步数 (猫位置)
' 寻找最短的出口位置
.计次循环首 (40, 计次变量)
  .如果真 (圆点步数 [边缘位置 [计次变量]] > 1)
    .如果 (出口位置 = 0)
      出口位置 = 边缘位置 [计次变量]
    .否则
      .如果真 (圆点步数 [边缘位置 [计次变量]] < 圆点步数 [出口位置])
        出口位置 = 边缘位置 [计次变量]
      .如果真结束
    .如果结束
  .如果真结束
.计次循环尾 ()
.如果真 (出口位置 = 0)
  返回 ()
.如果真结束
' 反向递归生成移动路径
加入成员 (移动路径, 出口位置)
生成路径 (出口位置)
.子程序 生成路径
.参数 当前位置, 整数型
.局部变量 当前步数, 整数型
.局部变量 横坐标, 整数型
.局部变量 纵坐标, 整数型
.局部变量 周围位置, 整数型, , "6"
.局部变量 下个位置, 整数型
.局部变量 计次变量, 整数型
当前步数 = 圆点步数 [当前位置]
.如果真 (当前步数 = 1)
  插入成员 (移动路径, 1, 猫位置)
  返回 ()
.如果真结束
纵坐标 = (当前位置 - 1) \ 11
横坐标 = 当前位置 - 纵坐标 × 11 - 1
' 计算周围的位置
' 查找左上角
.如果真 (纵坐标 > 0)
  .如果 (纵坐标 % 2 = 1)
    周围位置 [1] = (纵坐标 - 1) × 11 + 横坐标 + 1
  .否则
    .如果真 (横坐标 > 0)
      周围位置 [1] = (纵坐标 - 1) × 11 + 横坐标
    .如果真结束
  .如果结束
.如果真结束
' 查找右上角
.如果真 (纵坐标 > 0)
  .如果 (纵坐标 % 2 = 1)
    .如果真 (横坐标 < 10)
      周围位置 [2] = (纵坐标 - 1) × 11 + 横坐标 + 2
    .如果真结束
  .否则
    周围位置 [2] = (纵坐标 - 1) × 11 + 横坐标 + 1
  .如果结束
.如果真结束
' 查找左边
.如果真 (横坐标 > 0)
  周围位置 [3] = 纵坐标 × 11 + 横坐标
.如果真结束
' 查找右边
.如果真 (横坐标 < 10)
  周围位置 [4] = 纵坐标 × 11 + 横坐标 + 2
.如果真结束
' 查找左下角
.如果真 (纵坐标 < 10)
  .如果 (纵坐标 % 2 = 1)
    周围位置 [5] = (纵坐标 + 1) × 11 + 横坐标 + 1
  .否则
    .如果真 (横坐标 > 0)
      周围位置 [5] = (纵坐标 + 1) × 11 + 横坐标
    .如果真结束
  .如果结束
.如果真结束
' 查找右下角
.如果真 (纵坐标 < 10)
  .如果 (纵坐标 % 2 = 1)
    .如果真 (横坐标 < 10)
      周围位置 [6] = (纵坐标 + 1) × 11 + 横坐标 + 2
    .如果真结束
  .否则
    周围位置 [6] = (纵坐标 + 1) × 11 + 横坐标 + 1
  .如果结束
.如果真结束
' 寻找下个位置
.计次循环首 (6, 计次变量)
  .如果真 (周围位置 [计次变量] > 0)
    .如果真 (圆点步数 [周围位置 [计次变量]] = 当前步数 - 1)
      下个位置 = 周围位置 [计次变量]
      跳出循环 ()
    .如果真结束
  .如果真结束
.计次循环尾 ()
' 如果找不到路径,游戏结束
.如果真 (下个位置 = 0)
  当前步数 = 0
  .计次循环首 (121, 计次变量)
    .如果真 (圆点状态 [计次变量] = 1)
      当前步数 = 当前步数 + 1
    .如果真结束
  .计次循环尾 ()
  信息框 (“猫被围住了!一共用了” + 到文本 (当前步数) + “步。”, #信息图标, “游戏结束”)
  游戏状态 = 2
  返回 ()
.如果真结束
' 加入数组
插入成员 (移动路径, 1, 下个位置)
' 递归调用
生成路径 (下个位置)
.子程序 计算步数
.参数 当前位置, 整数型
.局部变量 横坐标, 整数型
.局部变量 纵坐标, 整数型
.局部变量 周围位置, 整数型, , "6"
.局部变量 计次变量, 整数型
纵坐标 = (当前位置 - 1) \ 11
横坐标 = 当前位置 - 纵坐标 × 11 - 1
' 计算周围的位置
' 查找左上角
.如果真 (纵坐标 > 0)
  .如果 (纵坐标 % 2 = 1)
    周围位置 [1] = (纵坐标 - 1) × 11 + 横坐标 + 1
  .否则
    .如果真 (横坐标 > 0)
      周围位置 [1] = (纵坐标 - 1) × 11 + 横坐标
    .如果真结束
  .如果结束
.如果真结束
' 查找右上角
.如果真 (纵坐标 > 0)
  .如果 (纵坐标 % 2 = 1)
    .如果真 (横坐标 < 10)
      周围位置 [2] = (纵坐标 - 1) × 11 + 横坐标 + 2
    .如果真结束
  .否则
    周围位置 [2] = (纵坐标 - 1) × 11 + 横坐标 + 1
  .如果结束
.如果真结束
' 查找左边
.如果真 (横坐标 > 0)
  周围位置 [3] = 纵坐标 × 11 + 横坐标
.如果真结束
' 查找右边
.如果真 (横坐标 < 10)
  周围位置 [4] = 纵坐标 × 11 + 横坐标 + 2
.如果真结束
' 查找左下角
.如果真 (纵坐标 < 10)
  .如果 (纵坐标 % 2 = 1)
    周围位置 [5] = (纵坐标 + 1) × 11 + 横坐标 + 1
  .否则
    .如果真 (横坐标 > 0)
      周围位置 [5] = (纵坐标 + 1) × 11 + 横坐标
    .如果真结束
  .如果结束
.如果真结束
' 查找右下角
.如果真 (纵坐标 < 10)
  .如果 (纵坐标 % 2 = 1)
    .如果真 (横坐标 < 10)
      周围位置 [6] = (纵坐标 + 1) × 11 + 横坐标 + 2
    .如果真结束
  .否则
    周围位置 [6] = (纵坐标 + 1) × 11 + 横坐标 + 1
  .如果结束
.如果真结束
' 设置周围步数
.计次循环首 (6, 计次变量)
  .如果真 (周围位置 [计次变量] > 0)
    .如果 (圆点状态 [周围位置 [计次变量]] = 0)
      .如果 (圆点步数 [周围位置 [计次变量]] > 圆点步数 [当前位置] + 1)
        圆点步数 [周围位置 [计次变量]] = 圆点步数 [当前位置] + 1
      .否则
        周围位置 [计次变量] = 0
      .如果结束
    .否则
      圆点步数 [周围位置 [计次变量]] = -1
      周围位置 [计次变量] = 0
    .如果结束
  .如果真结束
.计次循环尾 ()
' 递归调用
.计次循环首 (6, 计次变量)
  .如果真 (周围位置 [计次变量] > 0)
    计算步数 (周围位置 [计次变量])
  .如果真结束
.计次循环尾 ()
.子程序 检查状态
.局部变量 横坐标, 整数型
.局部变量 纵坐标, 整数型
.局部变量 位置序号, 整数型
.局部变量 缺口数量, 整数型
.局部变量 围墙数量, 整数型
.局部变量 计次变量, 整数型
纵坐标 = (猫位置 - 1) \ 11
横坐标 = 猫位置 - 纵坐标 × 11 - 1
' 查找左上角
.如果 (纵坐标 > 0)
  .如果 (纵坐标 % 2 = 1)
    位置序号 = (纵坐标 - 1) × 11 + 横坐标 + 1
    .如果真 (圆点状态 [位置序号] > 0)
      围墙数量 = 围墙数量 + 1
    .如果真结束
  .否则
    .如果 (横坐标 > 0)
      位置序号 = (纵坐标 - 1) × 11 + 横坐标
      .如果真 (圆点状态 [位置序号] > 0)
        围墙数量 = 围墙数量 + 1
      .如果真结束
    .否则
      缺口数量 = 缺口数量 + 1
    .如果结束
  .如果结束
.否则
  缺口数量 = 缺口数量 + 1
.如果结束
' 查找右上角
.如果 (纵坐标 > 0)
  .如果 (纵坐标 % 2 = 1)
    .如果 (横坐标 < 10)
      位置序号 = (纵坐标 - 1) × 11 + 横坐标 + 2
      .如果真 (圆点状态 [位置序号] > 0)
        围墙数量 = 围墙数量 + 1
      .如果真结束
    .否则
      缺口数量 = 缺口数量 + 1
    .如果结束
  .否则
    位置序号 = (纵坐标 - 1) × 11 + 横坐标 + 1
    .如果真 (圆点状态 [位置序号] > 0)
      围墙数量 = 围墙数量 + 1
    .如果真结束
  .如果结束
.否则
  缺口数量 = 缺口数量 + 1
.如果结束
' 查找左边
.如果 (横坐标 > 0)
  位置序号 = 纵坐标 × 11 + 横坐标
  .如果真 (圆点状态 [位置序号] > 0)
    围墙数量 = 围墙数量 + 1
  .如果真结束
.否则
  缺口数量 = 缺口数量 + 1
.如果结束
' 查找右边
.如果 (横坐标 < 10)
  位置序号 = 纵坐标 × 11 + 横坐标 + 2
  .如果真 (圆点状态 [位置序号] > 0)
    围墙数量 = 围墙数量 + 1
  .如果真结束
.否则
  缺口数量 = 缺口数量 + 1
.如果结束
' 查找左下角
.如果 (纵坐标 < 10)
  .如果 (纵坐标 % 2 = 1)
    位置序号 = (纵坐标 + 1) × 11 + 横坐标 + 1
    .如果真 (圆点状态 [位置序号] > 0)
      围墙数量 = 围墙数量 + 1
    .如果真结束
  .否则
    .如果 (横坐标 > 0)
      位置序号 = (纵坐标 + 1) × 11 + 横坐标
      .如果真 (圆点状态 [位置序号] > 0)
        围墙数量 = 围墙数量 + 1
      .如果真结束
    .否则
      缺口数量 = 缺口数量 + 1
    .如果结束
  .如果结束
.否则
  缺口数量 = 缺口数量 + 1
.如果结束
' 查找右下角
.如果 (纵坐标 < 10)
  .如果 (纵坐标 % 2 = 1)
    .如果 (横坐标 < 10)
      位置序号 = (纵坐标 + 1) × 11 + 横坐标 + 2
      .如果真 (圆点状态 [位置序号] > 0)
        围墙数量 = 围墙数量 + 1
      .如果真结束
    .否则
      缺口数量 = 缺口数量 + 1
    .如果结束
  .否则
    位置序号 = (纵坐标 + 1) × 11 + 横坐标 + 1
    .如果真 (圆点状态 [位置序号] > 0)
      围墙数量 = 围墙数量 + 1
    .如果真结束
  .如果结束
.否则
  缺口数量 = 缺口数量 + 1
.如果结束
.如果真 (缺口数量 > 0)
  信息框 (“猫逃跑了!”, #信息图标, “游戏结束”)
  游戏状态 = 2
  返回 ()
.如果真结束
.如果真 (围墙数量 > 5)
  .计次循环首 (121, 计次变量)
    .如果真 (圆点状态 [计次变量] = 1)
      缺口数量 = 缺口数量 + 1
    .如果真结束
  .计次循环尾 ()
  信息框 (“猫被围住了!一共用了” + 到文本 (缺口数量) + “步。”, #信息图标, “游戏结束”)
  游戏状态 = 2
  返回 ()
.如果真结束
.子程序 __启动窗口_创建完毕
_启动窗口.宽度 = _启动窗口.宽度 + 544 - _启动窗口.取用户区宽度 ()
_启动窗口.高度 = _启动窗口.高度 + 440 - _启动窗口.取用户区高度 ()
.子程序 _菜单开始游戏_被选择
新建游戏 ()

运行结果:

易语言用画板制作围猫游戏的源码

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对服务器之家的支持。如果你想了解更多相关内容请查看下面相关链接

相关文章

热门资讯

蜘蛛侠3英雄无归3正片免费播放 蜘蛛侠3在线观看免费高清完整
蜘蛛侠3英雄无归3正片免费播放 蜘蛛侠3在线观看免费高清完整 2021-08-24
2022年最旺的微信头像大全 微信头像2022年最新版图片
2022年最旺的微信头像大全 微信头像2022年最新版图片 2022-01-10
背刺什么意思 网络词语背刺是什么梗
背刺什么意思 网络词语背刺是什么梗 2020-05-22
yue是什么意思 网络流行语yue了是什么梗
yue是什么意思 网络流行语yue了是什么梗 2020-10-11
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全 2019-12-26
返回顶部