Python轻松制作:经典小游戏代码全解析
python可以做什么小游戏?
Python简单游戏代码如何使用Python制作一个简单的游戏1.Python猜谜游戏代码:
2.importrandom#导入随机模块
3.
4.num=1
5。
yin_num=0
6。
shu_num=0
7.whilenum2:
12.print('无法打印超过2个值')
13.否则:
14。
data=['石头','剪刀','布']
15.com=random.randint(0,2)
16.print(你输出的是{},计算机输出的是{}.format(data[user],data[com]))
17.ifuser==com:
18,print('Tie')
19,继续
20,elif(user==0andcom==1)or(用户==1和com==2)或(用户==2和com==0):
21。
print('你赢了')
22.yin_num+=1
23。
否则:
24。
print('你输了')
25.shu_num+=1
26。
num+=1
27。
Python数字炸弹游戏代码:
28.导入随机
29,导入时间
30,
31,bomb=random.randint(1,99)
32,打印(炸弹)
33.start=0
34,end=99
35,while1==1:
36,
37、people=int(input('请在{}和{}之间输入数字:'.format(start,end)))
38、ifpeoplebomb:
39,print('更大')
40,end=人
41。
elifpeoplebomb:
42。
print('较小')
43.开始=人
44。
else:
45.print('BOOM!!!')
46.打破
47。
print('等待计算机输入{}到{}之间的数字:'.format(start,end))
48.time.sleep(1)
49.com=random.randint(start+1,end-1)
50。
print('计算机输入:{}'.format(com))
51.ifcombomb:
52。
打印('更大')
53.end=com
54、elifcombomb:
55,print('小')
56,start=com
57,否则:
58,打印('BOOM!!!')
59。
pre{overflow-x:auto}消消乐实现的组成主要包括三个部分:游戏主体、计分器、计时器。
下面我们来看一下。
我们来具体实现一下。
首先我们看一下游戏所需的Python库。
import?osimport?sysimport?timeimport?pygameimport?random
定义一些常量,如窗口宽度和高度、网格行数和行数等,代码如下:
宽度?=?400HEIGHT?=?400NUMGRID?=?8GRIDSIZE?=?36XMARGIN?=?(WIDTH?-?GRIDSIZE?*?NUMGRID)?//?2YMARGIN?=?(HEIGHT?-?GRIDSIZE?*?NUMGRID)?//?2ROOTDIR?=?os.getcwd()FPS?=?30
然后使用以下代码创建一个主窗口:
pygame.init()screen?=?pygame.display.set_mode((WIDTH,?HEIGHT))pygame.display.set_caption('小小乐')
看看效果:
然后画一个窗口中8x8的网格,代码如下:
screen.fill((255,?255,?220))#?游戏界面中的网格绘制def?drawGrids(self):for?x?in?range(NUMGRID):for?y?in?range(NUMGRID):rect?=?pygame.Rect((XMARGIN+x*GRIDSIZE,?YMARGIN+y*GRIDSIZE,?GRIDSIZE,?GRIDSIZE))self.drawBlock(rect,?color=(255,?165,?0),?size=1#?绘制矩形?block?boxdef?drawBlock(self,?block,?color=(255,?0,?0),?size=2):pygame.draw.rect(self.screen,?color,?block,?size)
看看效果:
然后在网格中随机放置各种拼图块,代码如下:
while?True:自己。
all_gems?=?[]self.gems_group?=?pygame.sprite.Group()for?x?in?range(NUMGRID):self.all_gems.append([])for?y?in?range(NUMGRID):宝石?=?拼图(img_path=random.choice(self.gem_imgs),?size=(GRIDSIZE,?GRIDSIZE),?position=[XMARGIN+x*GRIDSIZE,?YMARGIN+y*GRIDSIZE-NUMGRID*GRIDSIZE],?downlen=NUMGRID*GRIDSIZE)self.all_gems[x].append(gem)self.gems_group.add(gem)if?self.isMatch()[0]?==?0:break
看看效果:
然后添加记分器和计时器,代码如下:
#?DisplayScoredef?drawScore(self):score_render?=?self.font.render('分数:'+str(self.score),?1,?(85,?65,?0))rect?=?score_render.get_rect()rect.left,?rect.top?=?(55,?15)self.screen.blit(score_render,?rect)#?显示额外分数def?drawAddScore(self,?add_score):score_render?=?self.font.render('+'+str(add_score),?1,?(255,?100,?100))rect?=?score_render.get_rect()rect.left,?rect.top?=?(250,?250)self.screen.blit(score_render,?rect)#?显示剩余时间def?showRemainingTime(self):remaining_time_render?=?self.font.render('倒计时:?%ss'?%?str(self.remaining_time),?1,?(85,?65,?0))rect?=?remaining_time_render.get_rect()rect.left,?rect.top?=?(WIDTH-190,?15)self.screen.blit(remaining_time_render,?rect)
看看效果:
当设定的游戏时间用完时,我们可以生成一些提示信息,代码如下:
while?True:for?event?in?pygame.event.get():if?event.type?==?pygame.QUIT:pygame.quit()sys.exit()if?event.type?==?pygame.KEYUP?and?event.key?==?pygame.K_r:flag?=?Trueif?flag:breakscreen.fill((255,?255,?220))text0?=?'最终得分:?%s'?%?scoretext1?=?'按?R?键重新启动'y?=?140for?idx,?text?in?enumerate([text0,?text1]):text_render?=?font.render(text,?1,?(85,?65,?0))rect?=?text_render.get_rect()if?idx?==?0:rect.left,?rect.top?=?(100,?y)elif?idx?==?1:rect.left,?rect.top?=?(100,?y)y?+=?60screen.blit(text_render,?rect)pygame.display.update()
看看效果:
说完与游戏图形界面相关的部分,我们看一下游戏逻辑的主要处理。
我们使用鼠标来操作拼图,因此程序需要检查是否有任何拼图被选中。
代码实现如下:
def?checkSelected(self,?position):for?x?in?range(NUMGRID):for?y?in?range(NUMGRID):if?self。
getGemByPos(x,?y).rect.collidepoint(*position):return?[x,?y]return?None
我们需要交换鼠标连续选择的拼图块的位置。
代码实现如下:
def?swapGem(self,?gem1_pos,?gem2_pos):margin?=?gem1_pos[0]?-?gem2_pos[0]?+?gem1_pos[1]?-?gem2_pos[1]if?abs(margin)?!=?1:return?Falsegem1?=?self.getGemByPos(*gem1_pos)gem2?=?self.getGemByPos(*gem2_pos)if?gem1_pos[0]?-?gem2_pos[0]?==?1:gem1.direction?=?'left'gem2.direction?=?'right'elif?gem1_pos[0]?-?gem2_pos[0]?==?-1:gem2.direction?=?'left'gem1.direction?=?'right'elif?gem1_pos[1]?-?gem2_pos[1]?==?1:gem1.direction?=?'up'gem2.direction?=?'down'elif?gem1_pos[1]?-?gem2_pos[1]?==?-1:gem2.direction?=?'向上'gem1.direction?=?'向下'gem1.target_x?=?gem2.rect.leftgem1.target_y?=?gem2.rect.topgem1.fixed?=?Falsegem2.target_x?=?gem1.rect。
leftgem2.target_y?=?gem1.rect.topgem2.fixed?=?Falseself.all_gems[gem2_pos[0]][gem2_pos[1]]?=?gem1self.all_gems[gem1_pos[0]][gem1_pos[1]]?=?gem2return?True
每次交换拼图时,我们都需要判断连续的拼图是否有三个或更多相同的拼图。
代码实现如下:
def?isMatch(self):for?x?in?range(NUMGRID):for?y?in?range(NUMGRID):if?x?+?2-2:对于每个?in?[res_match[1],?res_match[1]+1,?res_match[1]+2]:gem?=?self.getGemByPos(*[each,?start])if?start?==?res_match[2]:self.gems_group.remove(gem)self.all_gems[each]?=?Noneelif?start?=?0:gem.target_y?+=?GRIDSIZEgem.fixed?=?Falsegem.direction?=?'down'self.all_gems[each][start+1]?=?gemelse:gem?=?谜题le(img_path=random.choice(self.gem_imgs),?size=(GRIDSIZE,?GRIDSIZE),?position=[XMARGIN+each*GRIDSIZE,?YMARGIN-GRIDSIZE],?downlen=GRIDSIZE)self.gems_group.add(gem)self.all_gems[each][start+1]?=?gemstart?-=?1elif?res_match[0]?==?2:start?=?res_match[2]while?start-4:if?start?==?res_match[2]:for?each?in?range(0,?3):gem?=?self.getGemByPos(*[res_match[1],?start+each])self.gems_group.remove(gem)self.all_gems[res_match[1]][start+each]?=?Noneelif?start?=?0:gem?=?self.getGemByPos(*[res_match[1],?start])gem.target_y?+=?GRIDSIZE?*?3gem.fixed?=?Falsegem.direction?=?'down'self.all_gems[res_match[1]][start+3]?=?gemelse:gem?=?Puzzle(img_path=random.choice(self.gem_imgs),?size=(GRIDSIZE,?GRIDSIZE),?position=[XMARGIN+res_match[1]*GRIDSIZE,?YMARGIN+start*GRIDSIZE],?downlen=GRIDSIZE*3)self.gems_group.add(gem)self.all_gems[res_match[1]][start+3]?=?gemstart?-=?1
然后重复这个过程,直到游戏时间用完,游戏结束。
最后我们来看看动态的游戏效果。
总结
在这篇文章中,我们使用Python实现了一个简单的消除游戏。
有兴趣的可以进一步扩展游戏,比如增加关卡等。
这篇关于用Python实现消消乐游戏的文章就到这里了。
希望大家以后也能支持我!
试试吧...
大家好~欢迎大家阅读我的文章!
又到了每日游戏更新系列时间了。
看到下面的.gif,让你想起了你的童年~
贪吃蛇的人气可以说是经久不衰。
已经有很多不同的版本,但游戏的一般规则是控制蛇的方向。
寻找可以吃的东西,每咬一口都会获得一定的积分,并且蛇的身体会随着进食而变得越来越长。
身体越长越难玩
不要碰墙,不能咬自己的身体,更不能咬自己的尾巴,还要小心其他蛇!
你的童年是哪个版本的贪吃蛇
这个
嘿~~~
好吧,给我看看图片?
今天将带领大家制作Python版本的贪吃蛇游戏的就是这个大项目!
直接放代码
无论你玩得多么熟练,技术多么高超,你最终都会听到贪吃蛇的惨叫声。
记住:小蛇低调,中蛇欺弱怕强,大蛇聪明保护自己~