当前位置:首页 > 软件开放 > 正文内容

用Python设计小游戏(python设计小游戏谁先走到17谁就赢)

软件开放2年前 (2023-01-09)2282

本篇文章给大家谈谈用Python设计小游戏,以及python设计小游戏谁先走到17谁就赢对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

Python实现消消乐小游戏

pre{overflow-x: auto} 实现 消消乐的构成主要包括三部分:游戏主体、计分器、计时器,下面来看一下具体实现。

先来看一下游戏所需 Python 库。

import os import sys import time import pygame import random

定义一些常量,比如:窗口宽高、网格行列数等,代码如下:

WIDTH = 400 HEIGHT = 400 NUMGRID = 8 GRIDSIZE = 36 XMARGIN = (WIDTH - GRIDSIZE * NUMGRID) // 2 YMARGIN = (HEIGHT - GRIDSIZE * NUMGRID) // 2 ROOTDIR = os.getcwd() FPS = 30

接着创建一个主窗口,代码如下:

pygame.init() screen = pygame.display.set_mode((WIDTH, HEIGHT)) pygame.display.set_caption('消消乐')

看一下效果:

再接着在窗口中画一个 8 x 8 的网格,代码如下:

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 框 def drawBlock(self, block, color=(255, 0, 0), size=2): pygame.draw.rect(self.screen, color, block, size)

看一下效果:

再接着在网格中随机放入各种拼图块,代码如下:

while True: self.all_gems = [] self.gems_group = pygame.sprite.Group() for x in range(NUMGRID): self.all_gems.append([]) for y in range(NUMGRID): gem = Puzzle(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

看一下效果:

再接着加入计分器和计时器,代码如下:

# 显示得分 def 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 = True if flag: break screen.fill((255, 255, 220)) text0 = '最终得分: %s' % score text1 = '按 R 键重新开始' y = 140 for 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 += 60 screen.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 False gem1 = 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 = 'up' gem1.direction = 'down' gem1.target_x = gem2.rect.left gem1.target_y = gem2.rect.top gem1.fixed = False gem2.target_x = gem1.rect.left gem2.target_y = gem1.rect.top gem2.fixed = False self.all_gems[gem2_pos[0]][gem2_pos[1]] = gem1 self.all_gems[gem1_pos[0]][gem1_pos[1]] = gem2 return True

每一次交换拼图块时,我们需要判断是否有连续一样的三个及以上拼图块,代码实现如下:

def isMatch(self): for x in range(NUMGRID): for y in range(NUMGRID): if x + 2  -2: for each 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]

本篇文章给大家谈谈用Python设计小游戏,以及python设计小游戏谁先走到17谁就赢对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

 = None elif start = 0: gem.target_y += GRIDSIZE gem.fixed = False gem.direction = 'down' self.all_gems[each][start+1] = gem else: gem = Puzzle(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] = gem start -= 1 elif 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] = None elif start = 0: gem = self.getGemByPos(*[res_match[1], start]) gem.target_y += GRIDSIZE * 3 gem.fixed = False gem.direction = 'down' self.all_gems[res_match[1]][start+3] = gem else: 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] = gem start -= 1

之后反复执行这个过程,直至耗尽游戏时间,游戏结束。

最后,我们动态看一下游戏效果。

总结

本文我们使用 Python 实现了一个简单的消消乐游戏,有兴趣的可以对游戏做进一步扩展,比如增加关卡等。

到此这篇关于Python实现消消乐小游戏的文章就介绍到这了,希望大家以后多多支持!

用Python写一个简单的小游戏

相信大家都玩过俄罗斯方块吧,应该是小时候的回忆吧,但是想不想了解一下这个程序是怎么写出来的呢,自己写出来的应该玩起来更有感觉吧!

感觉还是蛮好玩吧!

接下来,我就分享一下这个游戏的源码过程啊!

先用python创建一个py文件

定义这次程序所需要的类

然后写出它所需要的模块

画背景图

画网格线

# 画已经落下的方块

# 画单个方块

# 画得分等信息

这样就可以写出来一个十分简单的俄罗斯方块啦,是不是觉得还不错呢!

python简单小游戏代码 怎么用Python制作简单小游戏

1、Python猜拳小游戏代码:

2、import random #导入随机模块

3、

4、num = 1

5、yin_num = 0

6、shu_num = 0

7、while num 2:

12、 print('不能出大于2的值')

13、 else:

14、 data = ['石头', '剪刀', '布']

15、 com = random.randint(0, 2)

16、 print(您出的是{},电脑出的是{}.format(data[user], data[com]))

17、 if user == com:

18、 print('平局')

19、 continue

20、 elif (user == 0 and com == 1) or (user == 1 and com == 2) or (user == 2 and com == 0):

21、 print('你赢了')

22、 yin_num += 1

23、 else:

24、 print('你输了')

25、 shu_num += 1

26、 num += 1

27、Python数字炸弹小游戏代码:

28、import random

29、import time

30、

31、bomb = random.randint(1, 99)

32、print(bomb)

33、start = 0

34、end = 99

35、while 1 == 1:

36、

37、 people = int(input('请输入{}到{}之间的数:'.format(start, end)))

38、 if people bomb:

39、 print('大了')

40、 end = people

41、 elif people bomb:

42、 print('小了')

43、 start = people

44、 else:

45、 print('BOOM!!!')

46、 break

47、 print('等待电脑了输入{}到{}之间的数:'.format(start, end))

48、 time.sleep(1)

49、 com = random.randint(start + 1, end - 1)

50、 print('电脑输入:{}'.format(com))

51、 if com bomb:

52、 print('大了')

53、 end = com

54、 elif com bomb:

55、 print('小了')

56、 start = com

57、 else:

58、 print('BOOM!!!')

59、 break

用Python设计小游戏的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于python设计小游戏谁先走到17谁就赢、用Python设计小游戏的信息别忘了在本站进行查找喔。

扫描二维码推送至手机访问。

版权声明:本文由飞速云SEO网络优化推广发布,如需转载请注明出处。

本文链接:http://zspsrg.cn/post/3142.html

分享给朋友:

“用Python设计小游戏(python设计小游戏谁先走到17谁就赢)” 的相关文章

北京软件开发公司(北京软件开发公司哪家好些)

北京软件开发公司(北京软件开发公司哪家好些)

今天给各位分享北京软件开发公司的知识,其中也会对北京软件开发公司哪家好些进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录一览: 1、软件开发比较好的公司 2、北京的软件开发公司有哪些 3、北京有哪些好的软件开发公司? 4、北京软件定制开发哪家好 5、软件...

广州软件开发有限公司(广州有哪些软件开发公司)

广州软件开发有限公司(广州有哪些软件开发公司)

今天给各位分享广州软件开发有限公司的知识,其中也会对广州有哪些软件开发公司进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录一览: 1、广州市中智软件开发有限公司是国企吗 2、广州市诚毅科技软件开发有限公司怎么样? 3、广州有哪些好的软件开发公司? 广州市中智软...

免费的h5游戏制作平台(h5制作平台免费)

免费的h5游戏制作平台(h5制作平台免费)

今天给各位分享免费的h5游戏制作平台的知识,其中也会对h5制作平台免费进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录一览: 1、微信H5页面免费制作工具有哪些,求各位大神解答 2、H5制作平台哪个比较好用? 3、H5制作平台有哪些 4、像云来一样,免费好用...

兄弟装饰公司官网水电安装工艺(兄弟建筑装饰工程有限公司)

兄弟装饰公司官网水电安装工艺(兄弟建筑装饰工程有限公司)

今天给各位分享兄弟装饰公司官网水电安装工艺的知识,其中也会对兄弟建筑装饰工程有限公司进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录一览: 1、室内装修施工工艺流程有哪些? 2、大家 说说,重庆兄弟装饰公司和重庆兴唐装饰公司如何,知道的说说? 3、重庆装饰公司前...

婚礼官网免费源码(婚礼网站模板)

婚礼官网免费源码(婚礼网站模板)

今天给各位分享婚礼官网免费源码的知识,其中也会对婚礼网站模板进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录一览: 1、2022年国内景区婚礼怎么报名 2、如何查询一个企业的官网页面源代码?如何设置关键字的优化,线上 3、爱克丝文婚礼公司还在吗 4、婚礼的电...

php开源博客系统(php 博客系统)

php开源博客系统(php 博客系统)

本篇文章给大家谈谈php开源博客系统,以及php 博客系统对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 本文目录一览: 1、谁推荐一个好的个人博客源码(PHP+MYSQL) 2、跪求一个好用的php blog源码 3、php开发用什么软件 4、类似WordPress的建站软件还...