我的编程空间,编程开发者的网络收藏夹
学习永远不晚

怎么用Python做小游戏

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

怎么用Python做小游戏

怎么用Python做小游戏,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

你有没有想过电脑游戏是怎样制作出来的?其实它没有你想象的那样复杂!

在这个教程里,你要学做一个叫《兔子和獾》的塔防游戏,兔子作为英雄,需要在城堡里抵御獾的进攻。

怎么用Python做小游戏

为了写这个游戏的代码,你将会用Python。好吧,我不是指一条大蟒蛇!

Python是一种计算机语言。我们在这篇教程里选择Python是因为这门语言很容易上手,学习起来也很简单和有趣。

如果你是个Python方面的新手,在开始看教程之前你可以看看这本书《 Think Python: How to Think Like a Computer Scientist》。这能让你看教程的时候不那么吃力。

在看了那本书后回到这里并且准备好——兔子和獾之间有一场大战爆发,一起来加入到这场战斗中来吧!

起步:安装Python

如果你想在Windows PC上尝试这篇教程里讲到的东西,你需要安装Python。确保你安装的是2.7.3版本,而不是3.3.0版本!在安装程序运行完之后,在开始按钮的“所有程序”里就会有IDLE了。首先启动IDLE。

如果你是用的Mac,上面已经是把Python装好了!打开终端,输入python,然后按回车就行了

注意:如果你是安装的从python.org下载的安装包,那么你在Mac上也可以启动IDLE了,它应该是在 /Application/Python2.7 这个文件夹里。

如果你按以上的步骤执行了,那么你可以看到一下的东西:

Python 2.7.3 (v2.7.3:70274d53c1dd, Apr  9 2012, 20:52:43) [GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>>

注意:如果你想迅速终止Python,你可以输入exit()然后按回车,或者是按Control+D。

现在很迅速的把Python环境配置好了,为了测试下Python是否正常工作,输入 print 1+1 然后按回车,应该会打印出2。你刚才就写了一个简单的Python程序!

怎么用Python做小游戏

那么,现在你知道Python已经能正常工作了,为了能用Python来写一个游戏,你需要安装PyGame。

PyGame是一个Python的库,能够让你更容易的写出一个游戏。它提供的功能包括图片处理和声音重放的功能,并且它们能很容易的整合进你的游戏里。

点击这里下载适合你的PyGame安装包。确保你下载的是针对2.7版本的库。

注意:从以上链接下载的PyGame安装包是无法与Mac上安装的Python一起正常工作的。你需要从 python.org 上下载一个Python安装包才能使用PyGame。或者,你可以用MacPorts来让你的Python和PyGame正常工作。

为了确定PyGame是否安装好了,打开IELD或者是在终端里运行Python,然后输入import pygame 并且回车。如果没有打出任何输出,说明没有问题。

但是,如果打出了如下图的输出,那么PyGame就没有被安装上。

Python 2.7.2 (default, Jun 20 2012, 16:23:33) [GCC 4.2.1 Compatible Apple Clang 4.0 (tags/Apple/clang-418.0.60)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> import pygame Traceback (most recent call last):   File "<stdin>", line 1, in <module> ImportError: No module named pygame >>>

如果你发现了这样的错误,把出错的情况发到论坛上,我会帮助你把它运行起来

运行文件里的Python代码

现在你已经能在Python快捷终端里写一点代码了,如果你想要写一个更大一点的程序(比如游戏),那么你就需要把代码保存到文件里了。

有好几种运行文件里的Python代码的方法。其中一种方法是使用一个简单的文本编辑器,比如Windows系统上的nodepad,或者Mac上 的TextEdit。打开一个新的文本文件,输入Python代码(比如print 1+1)。然后将其保存为XXX.py 。(XXX表示文件名)

在Windows上,双击这个py文件来运行它。在Mac上,打开终端然后输入python,然后把代码文件拖到终端上最后再按回车。

另一种运行代码的方法是使用IDLE编辑器,这是在这篇教程里主要使用的方法。要运行IDLE,需要在终端里输入idle,然后在菜单里选择新建文 件,然后就可以利用这个文本编辑器来写Python代码了。你可以通过 File/Save 来保存文件,通过点击 Run/Run(F5)来运行代码。

要注意运行的菜单在编辑器里打开了文件之后才可用。

添加游戏资源

你现在已经基本上准备好来创建一个游戏了。但是哪个游戏没有很棒的图像和音效呢?我把游戏里需要的图像和音像保存在了zip档案里,点击这里下载。

在下载好文件后,为游戏创建一个文件夹然后把压缩文件解压到这个文件夹的子文件夹里,将其命名为resources,具体如下图:

怎么用Python做小游戏

我们现在可以开始做兔子和獾这个游戏啦!

第一步:你好,兔子

运行IDLE,打开一个新的文本编辑窗口。输入以下的代码:

# 1 - Import library import pygame from pygame.locals import *   # 2 - Initialize the game pygame.init() width, height = 640, 480 screen=pygame.display.set_mode((width, height))   # 3 - Load images player = pygame.image.load("resources/images/dude.png")   # 4 - keep looping through while 1:     # 5 - clear the screen before drawing it again     screen.fill(0)     # 6 - draw the screen elements     screen.blit(player, (100,100))     # 7 - update the screen     pygame.display.flip()     # 8 - loop through the events     for event in pygame.event.get():         # check if the event is the X button         if event.type==pygame.QUIT:             # if it is quit the game             pygame.quit()             exit(0)

把文件保存到你的游戏文件夹里,把它命名为 game.py 。我们现在看看这段代码做了什么:

  1. 导入pygame库,这一步能让你使用库里提供的功能

  2. 初始化pygame,设置展示窗口

  3. 加载作为兔子的图片

  4. 不停地循环执行接下来的部分

  5. 在给屏幕画任何东西之前用黑色进行填充

  6. 在屏幕的(100,100)坐标出添加你加载的兔子图片

  7. 更新屏幕

  8. 检查一些新的事件,如果有退出命令,则终止程序的执行。

在运行这段代码后,你会看到一下的画面:

怎么用Python做小游戏

可以看到一个兔子在这里,准备好要战斗了!

但是暂时兔子看起来还是很孤独的,背景上只有它一个。现在是时候让它更进一步了。

第二步:添加背景

我们现在开始给游戏的背景加上一些风景。这可以通过一些 screen.blit() 的调用来实现。

在#3的结尾处,在添加玩家图片的后面,加上以下的代码:

grass = pygame.image.load("resources/images/grass.png") castle = pygame.image.load("resources/images/castle.png")

这段代码加载图片并将它们放在变量里。现在它们需要被画在屏幕上。但是当你检查了草的图片后,发现它不会覆盖整个屏幕,它的分辨率是640 x 480。

添加到 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 ))

你可以看到,这段代码首先是依次通过x进行循环。又是一个依次通过y的循环并且根据循环里x和y的值来画上草的效果。接下来的几行就是在屏幕上画出城堡。

如果你现在运行你的代码,效果应该如下图:

怎么用Python做小游戏

好多了&mdash;&mdash;现在开始看起来不错了!

第三步:让兔子能够移动

接下来你需要加上一些真正的游戏的元素了,比如让兔子能够随着按键移动。

为了做到这一点,首先,你需要实现一个方法,用来记录在某一时刻那个键被按下。可以通过新建一个按键状态的队列来存放每个你想在游戏里用到的按键。

把以下代码加入到 game.py 里#2后面:

keys = [False, False, False, False] playerpos=[100,100]

这段代码是不言自明的,key这个队列用来记录几个按键的情况:WASD。队列中的每一项对应一个按键&mdash;&mdash;第一个对应W,第二个对应A等等。

playerpos这个变量表示程序画出玩家的位置。因为这个游戏会让玩家向不同的方向移动,用一个变量来表示玩家的位置并且能够依据这个变量将玩家画出来的方案是非常适合的。

现在你需要修改现在画出玩家的代码,需要用上playerpos变量。把#6部分的代码进行修改:

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

改成:

screen.blit(player, playerpos)

接下来,根据按下的键来更新按键记录数组。PyGame里用给按键添加事件的方法来检测按键。

在#8八月份的结尾,就在event.py == pygame.QUIT后面,添加一下的代码(与pygame.QUIT保持同级别缩进):

if event.type == pygame.KEYDOWN:     if event.key==K_w:         keys[0]=True     elif event.key==K_a:         keys[1]=True     elif event.key==K_s:         keys[2]=True     elif event.key==K_d:         keys[3]=True if event.type == pygame.KEYUP:     if event.key==pygame.K_w:         keys[0]=False     elif event.key==pygame.K_a:         keys[1]=False     elif event.key==pygame.K_s:         keys[2]=False     elif event.key==pygame.K_d:         keys[3]=False

Wow!又加了这么多代码。但是如果你仔细看看这些表达式,并没有那么复杂。

首先,你检查是否有一个键被按下或放开。然后,检查是哪一个键被按下或放开了,如果被按下或放开的键是你使用的,你就更新记录按键的变量。

最终,你需要更新playerpos变量作为按键后的反应。这实际上是非常简单的。

把一下的代码加到game.py的结尾:(让它与for 循环保持同级别缩进)

# 9 - Move player if keys[0]:     playerpos[1]-=5 elif keys[2]:     playerpos[1]+=5 if keys[1]:     playerpos[0]-=5 elif keys[3]:     playerpos[0]+=5

这段代码简单的检查了哪个键被按下,然后增加或减少玩家的x和y坐标。

运行这个游戏,那么你应该会看到一下的画面。试着按WASD,耶!好使了!

怎么用Python做小游戏

第四步:让兔子转向

好的,现在你的兔子在你按键的时候可以移动了,但是如果你能用鼠标让兔子朝向你选择的方向不是更酷吗?这样它就不会总是朝向一个方向了。用三角定理实现它会非常简单。

看一下下面的插图:

怎么用Python做小游戏

在上图中,如果(5,2)是兔子的位置,(2,4)是现在鼠标的位置,你可以通过三角定理来得出需要旋转的角度。然后,你知道了旋转的角度后,以就可以来旋转你的兔子了。

如果你对这部分感到有点疑惑,不要担心&mdash;&mdash;这没有关系。但这是你为什么需要在数学课上集中精力的原因。在游戏编程中会用得到它的。

现在,你需要接受你的游戏里的概念。为了实现它,你可以使用PyGame Surface.rotate(degrees) 函数。

atatn2函数是来自Python 的math库。所以把一下代码加到#1部分:

import math

然后,把#6部分的最后一行用一下代码替换:

# 6.1 - Set player position and rotation position = pygame.mouse.get_pos() angle = math.atan2(position[1]-(playerpos[1]+32),position[0]-(playerpos[0]+26)) playerrot = pygame.transform.rotate(player, 360-angle*57.29) playerpos1 = (playerpos[0]-playerrot.get_rect().width/2, playerpos[1]-playerrot.get_rect().height/2) screen.blit(playerrot, playerpos1)

我们来浏览一下以上代码的基本结构。首先获取鼠标和玩家的位置。然后将它们使用atan2函数。然后,获取通过atan2函数得出的角度和弧度。

当兔子被旋转的时候,它的位置将会改变。所以你需要计算兔子新的位置,然后将其在屏幕上显示出来。

再次运行游戏,如果你只是按WASD这几个键,那么这个游戏跟以前还是一样的。但是如果你移动鼠标,兔子也开始旋转了,相当酷!

怎么用Python做小游戏

第五步:射吧!兔子

现在你的兔子可以四处移动了,是时候来添加更多的功能了。让兔子用箭头射向它们的敌人怎么样?

这一步会有一点复杂,因为你需要跟踪所有的箭头,更新它们,旋转它们,在它们跑出屏幕的时候删除它们。

首先,在#2声明的部分加上必要的变量的声明。

acc=[0,0] arrows=[]

第一个变量会跟踪玩家的精度,第二个变量会跟踪箭头。这个精度的变量本质上是一个数字组成的列表,记录了射出的箭头数和被击中的獾的数量。之后我们会用到这些信息用来计算射击精确度。

接下来,在#3部分结尾加载箭头的图片。

arrow = pygame.image.load("resources/images/bullet.png")

现在,当玩家点击鼠标,就需要射出一支箭头。在#8部分加上以下代码:

if event.type==pygame.MOUSEBUTTONDOWN:     position=pygame.mouse.get_pos()     acc[1]+=1     arrows.append([math.atan2(position[1]-(playerpos1[1]+32),position[0]-(playerpos1[0]+26)),playerpos1[0]+32,playerpos1[1]+32])

这段代码会检查是否鼠标被点击了,如果点击了,它就会得到鼠标的位置并且根据玩家和光标的位置计算出箭头旋转角度。旋转角度的值存放在arrows这个数组里。

接下来,你需要真的在屏幕上画出箭头来。在#6部分加上以下代码:

# 6.2 - Draw arrows for bullet in arrows:     index=0     velx=math.cos(bullet[0])*10     vely=math.sin(bullet[0])*10     bullet[1]+=velx     bullet[2]+=vely     if bullet[1]<-64 or bullet[1]>640 or bullet[2]<-64 or bullet[2]>480:         arrows.pop(index)     index+=1     for projectile in arrows:         arrow1 = pygame.transform.rotate(arrow, 360-projectile[0]*57.29)         screen.blit(arrow1, (projectile[1], projectile[2]))

vely和velx的值是根据三角定理算出来的。10是箭头的速度。if表达式是检查箭头是否超出了屏幕范围,如果超出,就删除这个箭头。第二个for表达式是循环来把箭头根据相应的旋转画出来。

试着运行游戏。当你点击鼠标时,你的兔子就可以射出剪头了:D

怎么用Python做小游戏

第六步:獾,拿上武器!

好吧,现在有了城堡,并且你有一个英雄可以移动和射出箭头。还差什么呢?攻击城堡的敌人可以被英雄用箭头射了!

怎么用Python做小游戏

在这一步,你将会随机创建出一些獾冲向城堡。在游戏的进程中会有越来越多的獾冒出来。所以,我们来列个接下来要做的事情的清单。

  1. 添加一个坏蛋的列表

  2. 更新坏蛋的信息,并且检查它们是否超出屏幕范围

  3. 展示这些坏蛋

第一步,在#2部分加上一下代码:

badtimer=100 badtimer1=0 badguys=[[640,100]] healthvalue=194

以上的代码里定义了一个定时器,使得游戏里可以经过一段时间后就新建一只獾。

在#3部分结尾处添加以下代码:

badguyimg1 = pygame.image.load("resources/images/badguy.png") badguyimg=badguyimg1

第一行跟前面加载图片的代码很相似。第二行声明了一个图片的复制。

接下来,你需要更新并且显示这些坏蛋了。在#6.2部分加上以下代码:

# 6.3 - Draw badgers if badtimer==0:     badguys.append([640, random.randint(50,430)])     badtimer=100-(badtimer1*2)     if badtimer1>=35:         badtimer1=35     else:         badtimer1+=5 index=0 for badguy in badguys:     if badguy[0]<-64:         badguys.pop(index)     badguy[0]-=7     index+=1 for badguy in badguys:     screen.blit(badguyimg, badguy)

上面的代码看起来有不少。第一行是来检查badtime是否为0,如果为0,创建一个獾然后重新设置badtime。第一个循环更新獾的x坐标,检查獾是否超出屏幕范围,如果超出范围,将獾删掉。第二个循环是来画出所有的獾。

为了在以上代码里用到随机的功能,你需要导入random库。所以在#1部分加上导入的代码:

import random

最后,把一行代码添加到#4部分的while表达式后面:

badtimer-=1
 

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

怎么用Python做小游戏

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

怎么用Python做小游戏

怎么用Python做小游戏,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。你有没有想过电脑游戏是怎样制作出来的?其实它没有你想象的那样复杂!在这个教程里,你要学做一个叫《兔子和獾
2023-06-17

怎么用Python做游戏

今天小编给大家分享一下怎么用Python做游戏的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。基本框架首先,无论你是做什么游戏
2023-07-06

怎么用python制作小游戏

这篇文章主要介绍“怎么用python制作小游戏”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么用python制作小游戏”文章能帮助大家解决问题。开发工具Python版本:3.6.4相关模块:pyg
2023-06-27

怎么用Python实现2048小游戏

这篇文章主要介绍怎么用Python实现2048小游戏,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、开发环境Python版本:3.6.4相关模块:pygame模块;以及一些Python自带的模块。二、环境搭建安装P
2023-06-15

如何使用Python面向对象做个小游戏

这篇文章主要讲解了“如何使用Python面向对象做个小游戏”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何使用Python面向对象做个小游戏”吧!我们今天同样实现一个小游戏,这个小游戏非常
2023-06-15

如何使用python做一个罚点球小游戏

本篇内容介绍了“如何使用python做一个罚点球小游戏”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在学习了一点 Python 基础之后,我
2023-06-30

怎么用Python制作24点小游戏

这篇文章主要介绍“怎么用Python制作24点小游戏”,在日常操作中,相信很多人在怎么用Python制作24点小游戏问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用Python制作24点小游戏”的疑惑有所
2023-06-29

怎么用python制作迷宫小游戏

这篇文章主要讲解了“怎么用python制作迷宫小游戏”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用python制作迷宫小游戏”吧!开发工具Python版本: 3.6.4相关模块:pyg
2023-06-20

怎么用Python做了一个Windows扫雷游戏

怎么用Python做了一个Windows扫雷游戏,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Windows XP 上的扫雷是无数80/90后的集体回忆,今天我
2023-06-16

怎么用python实现打砖块小游戏

这篇文章主要介绍了怎么用python实现打砖块小游戏的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么用python实现打砖块小游戏文章都会有所收获,下面我们一起来看看吧。开发益智的打砖块小游戏,你可以试一下能
2023-06-30

怎么用Python制作打地鼠小游戏

本篇内容主要讲解“怎么用Python制作打地鼠小游戏”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用Python制作打地鼠小游戏”吧!简介打地鼠的游戏规则相信大家都知道,这里就不多介绍了,反
2023-06-29

怎么用java写小游戏

要用Java写一个小游戏,你可以按照以下步骤进行:1. 确定游戏的主题和玩法。选择一个简单的游戏主题,例如猜数字、井字棋、贪吃蛇等。2. 创建一个新的Java项目。可以使用Eclipse、IntelliJ IDEA或其他Java开发工具来创
2023-10-18

python怎么实现flappy bird小游戏

本篇内容介绍了“python怎么实现flappy bird小游戏”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!开发工具:Python版本:3
2023-06-29

python 答题小游戏

#^_^coding=gbk ^_^import linecache#数据分割f = [ x.replace('\n','') for x in linecache.getlines('a.txt')]items = [filter(lam
2023-01-31

怎么用Python实现小游戏飞机大战

本篇内容介绍了“怎么用Python实现小游戏飞机大战”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、环境安装本文是写的游戏代码,基于Pyg
2023-06-25

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录