12岁的少年教你用Python做小游戏

12岁的少年教你用Python做小游戏
12岁的少年教你用Python做小游戏

你有没有想过电脑游戏是怎样制作出来的?其实它没有你想象的那样复杂!在这个教程里,你要学做一个叫《兔子和獾》的塔防游戏,兔子作为英雄,需要在城堡里抵御獾的进攻。

为了写这个游戏的代码,你将会用Python。好吧,我不是指一条大蟒蛇!Python是一种计算机语言。我们在这篇教程里选择Python是因为这门语言很容易上手,学习起来也很简单和有趣。

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

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

1 2 3 4 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()然后按回车,或者是按Contr ol+D。

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

1 Python 2.7.

2 (default, Jun 20 2012, 16:23:33)

2 3 4 5 6 7 8 [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 "", line 1, in

ImportError: No module named pygame

>>>

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

运行文件里的Python代码

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

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

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

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

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

添加游戏资源

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

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

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 # 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.检查一些新的事件,如果有退出命令,则终止程序的执行。

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

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

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

1 2 3 4 5 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))

6 7 screen.blit(castle,(0,240)) screen.blit(castle,(0,345 ))

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

好多了——现在开始看起来不错了!

第三步:让兔子能够移动

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

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

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

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

1 screen.blit(player, playerpos)

1 2 3 4 5 6 7 8 9

10

11

12

13

14

15

16

17

18 if event.type == pygame.KEYDOW N: 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变量作为按键后的反应。这实际上是非常简单的。

1

2

3

4

5

6

7

8

9

# 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,耶!好使了!

第四步:让兔子转向

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

看一下下面的插图:

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

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

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

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

1 import math

1 2 3 4 5 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这几个键,那么这个游戏跟以前还是一样的。但是如果你移动鼠标,兔子也开始旋转了,相当酷!

1 2 acc=[0,0] arrows=[]

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

1

2

3

4

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)),p layerpos1[0]+32,playerpos1[1]+32])

1 2 # 6.2 - Draw arrows for bullet in arrows:

3 4 5 6 7 8 9

10

11

12

13 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

第六部:獾,拿上武器!

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

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

1.添加一个坏蛋的列表

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

3.展示这些坏蛋

1 2 badtimer=100 badtimer1=0

3 4 badguys=[[640,100]] healthvalue=194

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

=badguyimg1

1 2 3 4 5 6 7 8 9

10

11

12

13

14

15

16 # 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)

1 import random

1 badtimer-=1

试着运行这段代码。现在它应该像个真正的游戏了——你可以移动、射箭、转向,然后有獾冲向你。

12岁的少年教你用Python做小游戏

你有没有想过电脑游戏是怎样制作出来的?其实它没有你想象的那样复杂!在这个教程里,你要学做一个叫《兔子和獾》的塔防游戏,兔子作为英雄,需要在城堡里抵御獾的进攻。 为了写这个游戏的代码,你将会用Python。好吧,我不是指一条大蟒蛇!Python是一种计算机语言。我们在这篇教程里选择Python是因为这门语言很容易上手,学习起来也很简单和有趣。 如果你是个Python方面的新手,在开始看教程之前你可以看看这本书《Think P ython: How to Think Like a Computer Scientist》。这能让你看教程的时候不那么吃力。 在看了那本书后回到这里并且准备好——兔子和獾之间有一场大战爆发,一起来加入到这场战斗中来吧!

1 2 3 4 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()然后按回车,或者是按Contr ol+D。 现在很迅速的把Python环境配置好了,为了测试下Python是否正常工作,输入print 1+1 然后按回车,应该会打印出2。你刚才就写了一个简单的Python程序!

1 Python 2.7. 2 (default, Jun 20 2012, 16:23:33)

Python-大作业之五子棋游戏(附代码)

Python 大作业——五子棋游戏 姓名:学号: 姓名:学号: 一游戏介绍: 我们设计的是五子棋游戏,支持两人一个鼠标对下,黑方用左键单击,白方用右键单击,谁先下均可,落子无悔,下过的棋子对方点击后不会变色,程序可自行判断输赢并在五子连珠时弹出结果对话框,游戏双方需遵守不在空地点击和一次下一子的规则。 二游戏代码设计: 代码均为原创,没有借鉴和抄袭,首先是用户GUI界面设计,点击start进入游戏界面,点击quit则退出程序,为了方便判断和记录,我们按从左到右,从上到下的顺序给15x15=225颗棋子编号225,左键绑定函数callback1,点击后可算出它位于哪颗棋子上再画出来黑子,并把对应编号计入record这个列表,之后进入判断函数。右键绑定函数callback2,点击后画出白子,对应编号计入recor这个列表,之后进入判断函数,其中总列表rec的作用是使棋子不被下第二遍。 三作业感想 这个游戏虽然很小但是可以供室友们晚上娱乐之用,我们倾注了很多心血,之前采用模块化编程失败了很多次,有事件响应问题,参数传递问题,到第七个程序才成功,感谢张同珍老师指点了很多,

我们学会了使用类,受益匪浅,对Python产生了浓厚的兴趣。四过程截图 五、实验代码 from Tkinter import * from tkMessageBox import * class Game: def __init__(self): self.A=[] self.B=[] self.record=set()

self.recor=set() self.rec=self.record|self.recor self.root=Tk() self.root.geometry("180x250") self.root.title("Wu Zi Qi Game") self.r=Canvas(self.root,width=180,height=210,bg="purple") pic=PhotoImage(file="beijing.gif") self.r.create_image(90,100,image=pic) self.r.place(x=0,y=15) Label(self.root,text="***Wu Zi Qi Game***",fg="red").place(x=20,y=0) Button(self.root,text="start",command=self.start).place(x=30,y=230) Button(self.root,text="quit ",command=self.root.destroy).place(x=100,y=230) self.r.mainloop() def start(self): self.root.destroy() self.top=Tk() self.top.title("Game Start") self.c=Canvas(self.top,width=480,height=480,bg="white") self.c.pack() self.c.create_rectangle(25,25,455,455,fill="gray") for i in range(30,451,30): for j in range(30,451,30): self.c.create_oval(i-2,j-2,i+2,j+2,fill="blue") for i in range(1,16): self.c.create_line(30,30*i,450,30*i) self.c.create_line(30*i,30,30*i,450) self.c.create_oval(234,234,246,246,fill="black") self.c.create_oval(115,115,125,125,fill="black") self.c.create_oval(355,115,365,125,fill="black") self.c.create_oval(115,355,125,365,fill="black") self.c.create_oval(355,355,365,365,fill="black") self.c.bind("",self.callback1) self.c.bind("",self.callback2) self.c.mainloop() def callback1(self,event): u,v=event.x,event.y s=u/15 if s%2==1: self.x=(s+1)/2 else: self.x=s/2

少儿编程分享:手把手教你用Python编写战斗机游戏(一)

游戏分享:手把手教你用Python编写 战斗机游戏 2018.1.23 游戏制作 今天我们要分享的是战斗机游戏!在这个游戏中,飞机(游戏主角)需要躲避迎面飞来的炮弹(敌人)。 下面让我们一起来看一下如何编写这个小游戏吧! 初始设置 首先,创建一个新的.py文件然后置入下面的代码: import pygame from pygame.locals import* pygame.init() 和其他所有python程序一样,我们要首先导入(import)我们所要使用的模块(module)。在今天这个例子里,我们要导入pygame以及pygame.locals,以用于后面的内容。最后一行pygame.init()将所有的PyGame模块初始化,在我们正式开始写PyGame的“正文内容”之前,都要先加上这一行。 屏幕对象 首先,我们需要为所有的物体创建一个画布窗口,我们把这个变量叫做screen。为了创建这个变量,我们需要调用pygame.display下的set_mode()方法(method),并向set_mode()传递一个元组(tuple)来表示窗口的高和宽(在这里我们设置一个高800宽600的窗口)。 import pygame

from pygame.locals import* pygame.init() screen=pygame.display.set_mode((800,600)) 现在,如果你运行程序,你将会看到一个窗口突然出现,并在我们退出程序时马上消失。看来我们已经成功创建了画布!在下一部分,我们将加入游戏的main循环,这样我们就能确保只有我们输入正确的退出命令时,程序才会退出。 游戏循环 游戏的主循环内包含了所有要发生的事件。当我们玩游戏时,这段程序一直在运行。它能够不断更新游戏的状态,渲染游戏屏幕效果,并且收集玩家输入的指令。除了让主循环在游戏进行中不断执行,我们也需要让循环在我们退出程序时停止。因而,我们需要引入一些相应的指令,让程序能够在这些指令输入(input)时作出相应的反应。所有输入的指令(以及之后一些其他的事件)都会进入PyGame 的事件队列中,我们可以通过pygame.event.get()来得到这些事件。这个命令会返回队列中的事件列表,在游戏中,程序将对这些事件进行循环,并且根据事件的类别作出相应的反应。在下一段代码中,我们要处理的是KEYDOWN和QUIT事件: #用于让主循环不断运行的变量 running=True #主循环 while running: #针对事件队列的for循环 for event in pygame.event.get(): #检测是否有KEYDOWN事件,KEYDOWN是一个在pygame.locals中定义了的事件常量,这个库我们之前导入过 if event.type==KEYDOWN: #如果按了ESC键,把running的值设为False,并退出主循环 if event.key==K_ESCAPE: running=False #检测是否有QUIT事件,如果有的话,把running的值设为Flase elif event.type==QUIT:

Python 俄罗斯方块游戏

【Python】用Python实现一个俄罗斯方块游戏 俄罗斯方块游戏,使用Python实现,总共有350+行代码,实现了俄罗斯方块游戏的基本功能,同时会记录所花费时间,消去的总行数,所得的总分,还包括一个排行榜,可以查看最高记录。 排行榜中包含一系列的统计功能,如单位时间消去的行数,单位时间得分等。 附源码: from Tkinter import* from tkMessageBox import* import random import time #俄罗斯方块界面的高度 HEIGHT=18 #俄罗斯方块界面的宽度 WIDTH=10 ACTIVE=1 PASSIVE=0 TRUE=1 FALSE=0 root=Tk();root.title('Russia') class App(Frame): def__init__(self,master): Frame.__init__(self) master.bind('',self.Up) master.bind('',self.Left) master.bind('',self.Right) master.bind('',self.Down) #master.bind('',self.Space) master.bind('',self.Space) master.bind('',self.Play) master.bind('',self.Pause) self.backg="#%02x%02x%02x"%(120,150,30) self.frontg="#%02x%02x%02x"%(40,120,150) self.nextg="#%02x%02x%02x"%(150,100,100) self.flashg="#%02x%02x%02x"%(210,130,100) self.LineDisplay=Label(master,text='Lines:',bg='black',fg='red') self.Line=Label(master,text='0',bg='black',fg='red') self.ScoreDisplay=Label(master,text='Score:',bg='black',fg='red') self.Score=Label(master,text='0',bg='black',fg='red') #Display time self.SpendTimeDisplay=Label(master,text='Time:',bg='black',fg='red') self.SpendTime=Label(master,text='0.0',bg='black',fg='red') self.LineDisplay.grid(row=HEIGHT-2,column=WIDTH,columnspan=2)

Python编的摇色子的小游戏的代码

# -*- coding:UTF-8 -*- import random def roll_dice(numbers=3, points=None): print('----- 摇骰子 -----') if points==None: points=[] while numbers > 0: point = random.randrange(1, 7) points.append(point) numbers = numbers - 1 return points def roll_result(total): isBig = 11 <= total <= 18 isSmall = 3 <= total <= 10 if isBig: return '大' else: return '小' def start_game(): your_money = 1000

while your_money > 0: print('----- 游戏开始 -----') choices = ['大', '小'] your_choice = raw_input('请下注,大 or 小:') your_bet = raw_input('下注金额:') if your_choice in choices: points = roll_dice() total = sum(points) youWin = your_choice == roll_result(total) if youWin: print(points) print('恭喜,你赢了 {} 元,你现在有 {} 元本金'.format(your_bet, your_money + int(your_bet))) your_money = your_money + int(your_bet) else: print('骰子点数:', points) print('很遗憾,你输了 {} 元,你现在有 {} 元本金'.format(your_bet, your_money - int(your_bet))) your_money = your_money - int(your_bet) else: print('输入错误') else: print('游戏结束') start_game()

Python 大作业之五子棋游戏(附代码)

Python 大作业——xx游戏 姓名: xx学号: 姓名: xx学号: 一游戏介绍: 我们设计的是五子棋游戏,支持两人一个鼠标对下,黑方用左键单击,白方用右键单击,谁先下均可,落子无悔,下过的棋子对方点击后不会变色,程序可自行判断输赢并在五子连珠时弹出结果对话框,游戏双方需遵守不在空地点击和一次下一子的规则。 二游戏代码设计: 代码均为,没有借鉴和抄袭,首先是用户GUI界面设计,点击start进入游戏界面,点击quit则退出程序,为了方便判断和记录,我们按从左到右,从上到下的顺序给15x15=225颗棋子编号225,左键绑定函数callback1,点击后可算出它位于哪颗棋子上再画出来黑子,并把对应编号计入record这个列表,之后进入判断函数。右键绑定函数callback2,点击后画出白子,对应编号计入recor 这个列表,之后进入判断函数,其中总列表rec的作用是使棋子不被下第二遍。 三作业感想 这个游戏虽然很小但是可以供室友们晚上娱乐之用,我们倾注了很多心血,之前采用模块化编程失败了很多次,有事件响应问题,参数传递问题,到第七个程序才成功,感谢张同珍老师指点了很多,我们学会了使用类,受益匪浅,对Python产生了浓厚的兴趣。 四过程截图 五、实验代码 from Tkinter import *

from tkMessageBox import * class Game: def __init__(self): self.A=[] self.B=[] self.record=set() self.recor=set() self.rec=self.record|self.recor self.root=Tk() self.root.geometry("180x250") self.root.title("Wu Zi Qi Game") self.r=Canvas(self.root,width=180,height=210,bg="purple") pic=PhotoImage(file="beijing.gif") self.r.create_image(90,100,image=pic) self.r.place(x=0,y=15) Label(self.root,text="***Wu Zi Qi Game***",fg="red").place(x=20,y=0) self.r.mainloop() def start(self): self.root.destroy() self.top=Tk()

基于Python的游戏app充值api调用代码实例

基于Python的游戏app充值api调用代码实例代码描述:基于Python的游戏app充值api调用代码实例 代码平台:聚合数据 #!/usr/bin/python # -*- coding: utf-8 -*- import json, urllib from urllib import urlencode #---------------------------------- # 游戏充值调用示例代码-聚合数据 # 在线接口文档:https://www.360docs.net/doc/d97629111.html,/docs/88 #---------------------------------- def main(): #配置您申请的APPKey appkey ="*********************" #1.商品小类列表 request1(appkey,"GET") #2.商品信息 request2(appkey,"GET") #3.商品价格查询 request3(appkey,"GET") #4.游戏直充区服查询 request4(appkey,"GET") #5.游戏直充 request5(appkey,"GET") #6.订单状态查询 request6(appkey,"GET") #商品小类列表 def request1(appkey, m="GET"):

url ="https://www.360docs.net/doc/d97629111.html,/ofpay/game/cardlist" params ={ "key": appkey, #应用APPKEY(应用详细页查询) } params =urlencode(params) if m =="GET": f =urllib.urlopen("%s?%s"%(url, params)) else: f =urllib.urlopen(url, params) content =f.read() res =json.loads(content) if res: error_code =res["error_code"] if error_code ==0: #成功请求 print res["result"] else: print"%s:%s"%(res["error_code"],res["reason"]) else: print"request api error" #商品信息 def request2(appkey, m="GET"): url ="https://www.360docs.net/doc/d97629111.html,/ofpay/game/cardinfo" params ={ "cardid": "", #对应接口1的cardid "key": appkey, #应用APPKEY(应用详细页查询) } params =urlencode(params) if m =="GET": f =urllib.urlopen("%s?%s"%(url, params)) else: f =urllib.urlopen(url, params) content =f.read() res =json.loads(content) if res: error_code =res["error_code"] if error_code ==0: #成功请求 print res["result"]

少儿编程分享:手把手教你用Python编写贪吃蛇小游戏(一)

游戏分享:手把手教你用Python编写 贪吃蛇(一) 2018.1.10 今天我们将分享用Python制作贪吃蛇游戏。来试着挑战一下自己吧! 贪吃蛇游戏玩法 在贪吃蛇游戏中,玩家将控制一只不断在屏幕上四处行进的小蛇。玩家不能让小蛇减速,只能够控制小蛇的转向。每隔一段时间,屏幕上将出现一个红苹果,苹果的位置是随机的,玩家的目标是让小蛇吃到苹果。游戏开始的时候,蛇的长度很短,之后每一次吃到苹果,小蛇都会变长一点。当小蛇撞到屏幕的边缘时,游戏就结束了。 下面,让我们一起用Python一步步制作贪吃蛇游戏吧! 游戏网格 如果你之前玩过贪吃蛇游戏,你会发现苹果和小蛇的位置其实都是由网格线确定的。这些由网格线确定的小方格有它们自己的坐标系,如上图,最左上角的小方格坐标为(0,0),最右下角的坐标为(31,23)。

初始代码 1.#贪吃蛇游戏 2.#关注码趣学院 3. 4. 5. 6.import random,pygame,sys 7.from pygame.locals import* 8. 9.FPS=15 10.WINDOWWIDTH=640 11.WINDOWHEIGHT=480 12.CELLSIZE=20 13.assert WINDOWWIDTH%CELLSIZE==0,"Window width must be a multiple of cell size." 14.assert WINDOWHEIGHT%CELLSIZE==0,"Window height must be a multiple of cell size." 15.CELLWIDTH=int(WINDOWWIDTH/CELLSIZE) 16.CELLHEIGHT=int(WINDOWHEIGHT/CELLSIZE) 上面的代码设定了游戏的常量(constant variables),这些量在游戏进行的过程中将不会被改变。小方格的边长被储存在变量CELLSIZE中。assert语句(第13,14行)确保小方格的尺寸能够和游戏窗口完美契合。例如,如果变量CELLSIZE为10,而游戏窗口的宽WINDOWWIDTH和高WINDOWHEIGHT都被设置为15,那么整个游戏窗口只能放进1.5个小方格。assert语句确保窗口中的小方格数量为整数。 18.#R红G绿B蓝 19.WHITE=(255,255,255) 20.BLACK=(0,0,0) 21.RED=(255,0,0) 22.GREEN=(0,255,0)

小游戏代码