2019-05-25

素材有两份

(1)图片素材

(2)音频素材

第【1】步:你好,兔子

运行IDLE,打开文本编辑器窗口,把下面代码输入其中

保存文件到游戏文件夹中,命名成“game.py”,

我们一段段来分析代码:

1、导入PyGame库文件,这样我们就可以在程序中使用这个库中的函数

2、初始化PyGame,设置显示窗口

3、载入程序中使用到的兔子图片

4、反复循环下面的代码

5、在绘制其它物品前,使用黑色的背景

6、兔子的图片装入,定位于坐标(100,100)

7、更新屏幕

8、检查新的事件,如果有的话就执行,执行退出命令则退出程序

这时候,你运行程序,可以看到下面的界面

第【2】步:添加场景

我们来给这个游戏场景添加一个背景,可以用screen.blit()来做。

在#3代码区后面,添加如下代码

上面的语句载入图片,把图片放在指定变量中。现在可以在屏幕上绘制了,但是你检查一下,草地图片不能覆盖整个屏幕(640*480像素)。这也就是意味着,我们可以像贴瓷砖一样,把一张张的Grass贴到背景上去。

在game.py 文档的#6代码区的前面,添加下面的代码 :

for x in range(width/grass.get_width()+1):

for y in range(height/grass.get_height()+1):

screen.blit(grass,(x*100,y*100))

screen.blit(castle,(0,30))

screen.blit(castle,(0,135))

screen.blit(castle,(0,240))

screen.blit(castle,(0,345 ))

上面的代码中,For语句中先遍历x,在这个循环体中开始遍历y,把(x,y)的位置的草地绘制出来。后面4句代码是把城堡图片绘制在背景上。

现在你运行程序,可以看到下面的界面

第【3】步:让兔子动画起来

下面,我们得添加一些真实的游戏元素,通过键盘让兔子动起来。第一步,得跟踪键盘上那个按键被按下。我们要做的是制作一个键盘状态数列,并且跟踪游戏中每一个按键,每一次按键。

在game.py的#2代码区后面,添加下面的代码(在设置屏幕的高度与宽度后面)

代码很好理解,数组array会跟踪下面按键的秩序:WASD。数组中每一个元素对应一个按键- 第一个是W,第二个是A等,以此类推

playerpos 变量是在游戏中摆放玩家的位置(绘制地方)。游戏中,玩家会移动到不同的位置,使用变量可以非常方便的跟踪玩家位置,然后在这个位置处绘制玩家。

你需要修改原来的代码,可以使用新的变量,

screen.blit(player, (100,100))

把上面的坐标位置修改成变量playerpos

screen.blit(player, playerpos)

下面一步是更新按键数列中的状态,跟踪那个键被按下。PyGame通过添加事件函数event.key来侦测这种状态的变化。

在#8代码区的结尾处,检查event.type==pygame.QUIT,我们可以编写如下代码:

图片发自简书App

这里的代码数量开始增多了,把他们拆分成If语句,其实并不复杂。首先,检测某个键是按下还是释放,然后确认是那个键被按下或者释放,那个键被检测到,就会更新相应的键盘变量。

最后,还要根据按键的情况,更新playerpos 这个变量。

把下面代码放在game.py的最后面。

图片发自简书App

上面的代码检测那个键被按下,然后就相应增加或者减少玩家的X坐标或者Y坐标的位置,从而移动玩家。试着玩一下游戏吧,试着使用WASD控制玩家。

第【4】步:让兔子转个弯

兔子能够移动了,但是如果能够用鼠标控制兔子,可以旋转起来就更好了。实现这个功能挺简单的,我们会用到三角函数。

可以看下图

图片发自简书App

如上图,坐标(5,3)的位置是兔子,坐标(2,4)的位置是鼠标,旋转的角度你可以这样计算:atan2 是一个三角函数,通过计算两个点的X,Y坐标距离差,来计算出角度的大小。

这部分,如果你有一些问题的吧,也不必担心-程序可以往下走。以后数学课可要专心了噢,在游戏编程中经常会用到数学的知识。

现在你可以把这些知识应用到游戏中去了。你可以使用PyGame中的Surface.rotate(角度) 这个函数。

atan2 函数来自库 Python的数学库(Math). 所以在#1代码区后面添加下面代码:

import math

替换#6代码区的代码(player.blit这几行),修改后如下图:

图片发自简书App

来,复习一下这些代码的基本结构吧。

第一步,你会取得鼠标与玩家的平面位置(坐标),接着这些数据扔给atan2函数,atan2可以计算出从弧度到角度的转化值。兔子可以转动,当然它的位置也会变化,所以你需要重新计算兔子的新的位置,刷新它在屏幕上的显示。

再试试运行程序,按WASD和以前一样,当你移动鼠标时,兔子能够转起来了

6

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343

推荐阅读更多精彩内容

  • 你有没有想过游戏是如何开发的?其实视频游戏开发并没有你想想象的那么复杂。这里将介绍经典的游戏案例,就是所谓12岁少...
    A遇上方知友阅读 5,881评论 0 0
  • 一标题 使用说明:# + 空格 + 标题文字。 标题2 使用说明:## + 空格 + 标题文字。 二引用 使用说明...
    chao2024阅读 260评论 0 0
  • 面向对象是一种编写代码的思维方式:程序是由什么构成的。类,其实是一种抽象。User类:把用户相关信息抽象到一起。类...
    Archer_531c阅读 195评论 0 0
  • 演说之【职场平步青云的语言艺术】(一) 又是一年毕业季,对于初入职场的来讲,闭门造车不如广开言路、广结人缘,因而卓...
    帆野先生阅读 149评论 1 1
  • 成就一件事有多难,经历过的人百分之九十都有话要说。 凡俗之人成事艰难,或受限于自己肤浅的能力,或颓废于他人无端的摧...
    不一样的烟火100阅读 118评论 2 1