欢迎关注我的专栏( つ•̀ω•́)つ【人工智能通识】
main.py代码框架
上一篇中我们使用到了下面的代码:
import pygame
import sys
pygame.display.set_mode([600,400])
while 1:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
其中
import
是导入我们要使用的外部代码模块,pygame
当然是必须的,sys
是system系统
的简写,因为我们的游戏要运行在系统(windows或者苹果macOS)上面,所以我们会用到系统的一些命令,比如下面的sys.exit()
这个命令。pyagme.display.set_mode([600,400])
,这里的[600,400]
是一对数字组合在一起的,叫二元数组,这里它表示宽600,高400的一个矩形。整句话就是设置要弹出的窗口的大小,display显示
,set设置
,mode模式
。while 1:...当是1的时候,就...
,1在代码里面表示正确的、真的、存在的,相反,0表示错误、假的、不存在的。while 1:do something
那么something就会做,如果while 0: do something
那么就不会做了。for ... sys.exit()
这一段暂时可以不深究,只是固定格式。只要知道它表示游戏程序运行结束的时候系统把窗口也关掉,清理好计算机不要留痕迹,exit退出
。
游戏开发的思路
游戏开发都有固定的套路,无论是打地鼠、愤怒的小鸟,还是西瓜忍者,甚至是王者荣耀这样的大型游戏,他们大致都遵循下面几个思路:
-
创建一个地图场景,上面可能有些道具。
比如几个地鼠洞,一些可以放小猪的木盒子,甚至非常复杂的山谷地形,上面还有很多野怪。
这些地图上的元素一般都是被动的,就是你不去靠近或招惹野怪的话,它们不会互相打起来自相残杀,同样,小鸟还没发射的时候,木盒子也不会自己倒塌。 -
创建至少一个玩家可以控制的元素,它可以和地图场景发生交互。
这个可以被控制的元素我们称为玩家角色。在打地鼠游戏中这个角色就是一个锤子,愤怒的小鸟中这个角色其实是弹弓,弹出的小鸟其实是个道具,在王者荣耀游戏中玩家的角色就是自己的英雄。
-
必须要有评判标准,用来衡量输赢胜败。
玩家控制的角色和地图场景进行交互,发生反应,对应的也必须要有一个评判标准,比如计算3分钟内击中地鼠的次数,或者计算砸死的绿猪的数量,或者是打野怪获得的经验,这些规则一定要清晰而且不能互相矛盾。
大多数游戏都有输赢胜败,而胜败往往本质上只是谁的积分首先达到某个临界点。可以是某个关键道具的变化,比如对战游戏中塔被摧毁,也可以是玩家角色的属性变化,比如格斗游戏中被击杀;也可以只是纯粹的某项积分评比,用排行榜代替输赢。
游戏开发的技术点
-
要能够在窗口内绘制图形。
可以是直接用代码绘制几何图形,也可以是载入图片显示内容。
-
要能用代码控制每个元素(道具和角色)的动画。
动画就是一组图片不停地轮番变化。要能用代码控制播放和停止每个元素的动画,还能在不同动画之间快速切换。
-
能够接收用户的控制,并借此影响游戏中的元素。
知道用户什么时候按了键盘,什么时候点了鼠标,按了哪个按键,鼠标左键还是右键?我们经常把这些操作称之为交互事件。
-
能够对游戏中各种元素产生的有效数据进行计算和管理。
玩家角色一刀砍下去,怪物的血量减少了100点,这个就是数据,而且是很有用的数据,没有这个数据的话怪物可能永远砍不死了。
有时候这些数据要保存好,让用户下一次打开游戏的时候仍然看到自己的等级和装备都还存在。有些时候这些数据要及时清理,比如新的一局又开始了,地图上的道具和角色都要恢复原样。
综合上面几点,要想开发一个游戏其实并不难,只要我们学会四个技能:
- 用代码在屏幕上绘图
- 用代码控制动画
- 用代码接收用户的操作
- 用代码处理游戏里面的数据。
接下来后续的文章我们将一步步介绍使用Python实现这些技巧的方法。
<未完待续>
欢迎关注我的专栏( つ•̀ω•́)つ【人工智能通识】
每个人的智能新时代
如果您发现文章错误,请不吝留言指正;
如果您觉得有用,请点喜欢;
如果您觉得很有用,欢迎转载~
END