用Python写下了一个贪吃蛇大冒险小游戏
2025-08-27 12:19
4.2.4 start_kgame()算子
可穿墙方式在的主循环算子,通过该算子进行可穿墙方式在下贪吃蟒蛇和蜂蜜的算子函数调用、NPC管控贪吃蟒蛇社不会活动、两头和巨蟒蛇的假定不够在此之后和投球统计资料解决问题。
4.2.5 through_snake()算子
可穿墙方式在下贪吃蟒蛇生还假定算子,广泛传播返回值为贪吃蟒蛇两头和巨蟒蛇经纬度数据。在该算子中都设立赫尔HG参数die_flag,若生还设立为Ture并返回,没生还为False。通过初始值巨蟒蛇存储器条目,假定巨蟒蛇经纬度确实与两头经纬度不尽相同,若不尽相同则判定贪吃蟒蛇爪子到自身,生还。
4.2.6 show_end()算子
电子游戏终结时,终结图形设立算子。在该算子中都进行终结图形天窗体的算子函数调用,在天窗体中都看出NPC的最终投球,并在改算子中都函数调用pygame坎quit比对方法,使该坎停顿工作。
4.2.7 into_game()算子
电子游戏初始图形解决问题算子,在该算子中都进行电子游戏初始图形天窗体的算子函数调用。在该图形天窗体中都设立译文为“长小时方式在”、“可穿墙方式在”和“中都止”的三个其他用户操纵杆,通过设立循环,函数调用button算子(详细见6.2.8)美国国家安全局NPC的其他用户。
4.2.8 button()算子
电子游戏初始图形操纵杆美国国家安全局算子,在该算子中都解决问题对NPC鼠标其他用户意外事件和印表机可用意外事件的美国国家安全局。并根据NPC为了让,调试操纵杆对应的触发算子。即其他用户“长小时方式在”操纵杆,调试长小时方式在的主循环算子,以此类推。
五、调试组件编译器结构
在调试组件,进行pygame坎的算子函数调用、设立电子游戏背景音乐、看出可视各个参数的设立以及电子游戏初始图形的看出设立,完全一致结果编译器如下图:
六、电子游戏调试的测试(截图)
1. 电子游戏初始为了让图形
2. 长小时方式在调试图形
3. 可穿墙方式在调试图形
4. 电子游戏终结图形
七、电子游戏零碎编译器
import sysimport timeimport pygamefrom random import *# Position类,通过其构造算子,设立x和yclass Position(object): def 脚注init脚注(self, x, y): self.x = x self.y = y# 分解成随机的蜂蜜def new_food(head): while True: new_food = Position(randint(0, 48) * 20, randint(0, 29) * 20) # 假定在此之后分解成的事物确实和贪吃蟒蛇两头也就是说,也就是说则不创共价键 if new_food.x != head.x and new_food.y != head.y: break else: continue return new_food# 绘出,在天窗体中都绘出贪吃蟒蛇、蜂蜜# color:白色,position: 经纬度def rect(color, position): pygame.draw.circle(window, color, (position.x, position.y), 10)# 初始图形和电子游戏中都点差中都止电子游戏时def exit_end(): pygame.quit() quit()# 电子游戏终结时,看出投球的天窗体的设立def show_end(): # 的设计可视 # 假设可视大小 small_window = pygame.display.set_mode((960, 600)) init_background = pygame.image.load("image/init_bgimg.jpg") small_window.blit(init_background, (0, 0)) # 假设书名 pygame.display.set_caption("贪吃蟒蛇历险记") # 假设背景图片 font = pygame.font.SysFont("simHei", 40) fontsurf = font.render('电子游戏终结! 你的投球为: %s' % score, False, black) small_window.blit(fontsurf, (250, 200)) pygame.display.update() time.sleep(2) pygame.quit() sys.exit()# 长小时方式在生还设立# head: 两头, snake_body:巨蟒蛇def die_snake(head, snake_body): # 假设多种类型,默认为false,true时判定贪吃蟒蛇碰到自己,生还 die_flag = False # 初始值暂存贪吃蟒蛇位姿的条目,从第1个开始,(第0个位两头) for body in snake_body[1:]: # 如果两头的xy和巨蟒蛇xy等于,则判定相撞,设立flag为ture if head.x == body.x and head.y == body.y: die_flag = True # 若两头的xy在看出天窗体外,或flag为true,则看出终结图形,并中都止电子游戏 if head.x 960 or head.y 600 or die_flag: pygame.mixer.music.stop() show_end()# 长小时方式在主体设立def start_game(): # 假设存分数的全局参数 global score global color color = (randint(10, 255), randint(10, 255), randint(10, 255)) # 假设暂存NPC印表机可用社不会活动朝向的参数,初始为向右 run_direction = "right" # 假设贪吃蟒蛇社不会活动朝向的参数,初始为NPC共价回传朝向 run = run_direction # 范例简化两头、巨蟒蛇、蜂蜜某类 head = Position(160, 160) # 算子函数调用巨蟒蛇长度为3个各单位 snake_body = [Position(head.x, head.y + 20), Position(head.x, head.y + 40), Position(head.x, head.y + 60)] # 算子函数调用蜂蜜右边 food = Position(300, 300) # 死循环 while True: window.blit(background, (0,0)) # 美国国家安全局NPC印表机可用的社不会活动朝向参数,并根据可用转为up、down、right或left,方便应用程序中都函数调用 for event in pygame.event.get(): if event.type == pygame.QUIT: show_end() elif event.type == pygame.KEYDOWN: if event.key == pygame.K_UP: run_direction = "up" elif event.key == pygame.K_RIGHT: run_direction = "right" elif event.key == pygame.K_LEFT: run_direction = "left" elif event.key == pygame.K_DOWN: run_direction = "down" # 蜂蜜 rect(color, food) # 两头 rect(black, head) # 巨蟒蛇 for pos in snake_body: rect(white, pos) # 假定贪吃蟒蛇原社不会活动朝向与NPC印表机可用的社不会活动朝向确实触犯长小时社不会活动情况 if run == "up" and not run_direction == "down": run = run_direction elif run == "down" and not run_direction == "up": run = run_direction elif run == "left" and not run_direction == "right": run = run_direction elif run == "right" and not run_direction == "left": run = run_direction # 放入两头右边到巨蟒蛇条目中都 snake_body.insert(0, Position(head.x, head.y)) # 根据NPC共价回传朝向进行两头xy的不够在此之后 if run == "up": head.y -= 20 elif run == "down": head.y += 20 elif run == "left": head.x -= 20 elif run == "right": head.x += 20 # 假定确实生还 die_snake(head, snake_body) # 假定两头和蜂蜜经纬度,若等于,则每项,并分解成在此之后的蜂蜜 if head.x == food.x and head.y == food.y: score += 1 food = new_food(head) color = (randint(10, 255), randint(10, 255), randint(10, 255)) else: snake_body.pop() font = pygame.font.SysFont("simHei", 25) mode_title = font.render('长小时方式在', False, grey) socre_title = font.render('投球: %s' % score, False, grey) window.blit(mode_title, (50, 30)) window.blit(socre_title, (50, 65)) # 绘出不够在此之后 pygame.display.update() # 通过帧率设立贪吃蟒蛇速度 clock.tick(8)# 可穿墙方式在生还设立# head:两头,snake_body:巨蟒蛇def through_snake(head, snake_body): # 假设标志位 die_flag = False # 初始值,两头碰到巨蟒蛇时,flag为true中都止电子游戏 for body in snake_body[1:]: if head.x == body.x and head.y == body.y: die_flag = True if die_flag: pygame.mixer.music.stop() show_end() else: # 当两头的xy出天窗体时 # 四种穿墙情况,分别设立 if head.x < 0: head.x = 960 if head.x> 960: head.x = 0 if head.y < 0: head.y = 600 if head.y> 600: head.y = 0# 穿墙方式在主体设立def start_kgame(): global score global color color = (randint(10, 255), randint(10, 255), randint(10, 255)) # 假设蟒蛇初始朝向 run_direction = "up" run = run_direction # 范例简化两头、巨蟒蛇、蜂蜜某类 head = Position(160, 160) # 三格 snake_body = [Position(head.x, head.y + 20), Position(head.x, head.y + 40), Position(head.x, head.y + 60)] # 算子函数调用事物右边 food = Position(300, 300) # 死循环,美国国家安全局印表机共价键参数 while True: window.blit(background, (0, 0)) for event in pygame.event.get(): if event.type == pygame.QUIT: show_end() elif event.type == pygame.KEYDOWN: if event.key == pygame.K_UP: run_direction = "up" elif event.key == pygame.K_RIGHT: run_direction = "right" elif event.key == pygame.K_LEFT: run_direction = "left" elif event.key == pygame.K_DOWN: run_direction = "down" # 蜂蜜 rect(color, food) # 两头 rect(black, head) # 巨蟒蛇 for pos in snake_body: rect(white, pos) # 假定贪吃蟒蛇原社不会活动朝向与NPC印表机可用的社不会活动朝向确实触犯长小时社不会活动情况 if run == "up" and not run_direction == "down": # 若社不会活动朝向为向上,NPC可用社不会活动朝向向下,则违背贪吃蟒蛇长小时社不会活动情况 run = run_direction elif run == "down" and not run_direction == "up": run = run_direction elif run == "left" and not run_direction == "right": run = run_direction elif run == "right" and not run_direction == "left": run = run_direction # 放入两头右边到巨蟒蛇条目中都 snake_body.insert(0, Position(head.x, head.y)) # 根据NPC共价回传朝向进行两头xy的不够在此之后 if run == "up": head.y -= 20 elif run == "down": head.y += 20 elif run == "left": head.x -= 20 elif run == "right": head.x += 20 # 穿墙解决问题 through_snake(head, snake_body) # 假定确实每项和随机分解成在此之后的蜂蜜 if head.x == food.x and head.y == food.y: score += 1 food = new_food(head) color = (randint(10, 255), randint(10, 255), randint(10, 255)) else: snake_body.pop() font = pygame.font.SysFont("simHei", 25) mode_title = font.render('穿墙方式在', False, grey) socre_title = font.render('投球: %s' % score, False, grey) window.blit(mode_title, (50, 30)) window.blit(socre_title, (50, 65)) # 绘出不够在此之后 pygame.display.update() # 通过帧率设立贪吃蟒蛇速度 clock.tick(8)# 美国国家安全局算子,美国国家安全局印表机可用# msg: 操纵杆电子邮件,x: 操纵杆的x轴,y: 操纵杆的y轴,w: 操纵杆的宽,h: 操纵杆的高,ic: 操纵杆初始白色,ac: 操纵杆按下白色,action: 操纵杆按下的动作def button(msg, x, y, w, h, ic, ac, action=None): # 获取鼠标右边 mouse = pygame.mouse.get_pos() # 获取印表机可用 click = pygame.mouse.get_pressed() if x + w> mouse[0]> x and y + h> mouse[1]> y: pygame.draw.rect(window, ac, (x, y, w, h)) if click[0] == 1 and action != None: action() else: pygame.draw.rect(window, ic, (x, y, w, h)) # 设立操纵杆中都的注解样式和居中都对齐 font = pygame.font.SysFont('simHei', 20) smallfont = font.render(msg, True, white) smallrect = smallfont.get_rect() smallrect.center = ((x + (w / 2)), (y + (h / 2))) window.blit(smallfont, smallrect)# 电子游戏初始图形,为了让方式在def into_game(): into = True while into: window.blit(init_background, (0, 0)) for event in pygame.event.get(): if event.type == pygame.QUIT: exit_end() # 设立字体 font = pygame.font.SysFont("simHei", 50) # 初始图形看出注解 fontsurf = font.render('欢迎来到贪吃蟒蛇历险记!', True, black) # 注解 fontrect = fontsurf.get_rect() fontrect.center = ((width / 2), 200) window.blit(fontsurf, fontrect) button("长小时方式在", 370, 370, 200, 40, blue, brightred, start_game) button("可穿墙方式在", 370, 420, 200, 40, violte, brightred, start_kgame) button("中都止", 370, 470, 200, 40, red,brightred, exit_end) pygame.display.update() clock.tick(15)if 脚注name脚注 == '脚注main脚注': # 假设画布白色 white = (255, 255, 255) red = (200, 0, 0) green = (0, 128, 0) blue = (0, 202, 254) violte = (194, 8, 234) brightred = (255, 0, 0) brightgreen = (0, 255, 0) black = (0, 0, 0) grey = (129, 131, 129) score = 0 # 的设计可视 # 假设可视大小 width = 960 height = 600 window = pygame.display.set_mode((width, height)) # 假设书名 pygame.display.set_caption("贪吃蟒蛇历险记") # 假设背景图片 init_background = pygame.image.load("image/init_bgimg.jpg") background = pygame.image.load("image/bgimg.jpg") # 背景音乐 pygame.mixer.init() pygame.mixer.music.load("background.mp3") pygame.mixer.music.play(-1) # 创建时钟 clock = pygame.time.Clock() # 算子函数调用 pygame.init() # 初始图形 into_game()八、归纳这是一个简单的Python小电子游戏,完全一致编译器已贴在博客上。然后相关的高效率元数据、背景音乐、字体、编译器等我也存储器上传到了百度云,大家自行浏览不必~
百度云镜像:
提取码: qnea
-End-
早先有一些小伙伴,让我去找找一些 面试题 资料,于是我翻遍了收藏的 5T 资料后,统计整理出来,可以说是应用计算机程序面试必备!所有资料都整理到网盘了,欢迎浏览!
其他用户👆物品,关注后回复【面试题】不必获取在看点这里好文分享给不够多人↓↓
。一吃辣的就闹肚子怎么办小孩子总是闹肚子怎么办
经常便秘吃什么药好
上一篇: 民间故事:孔甲养禽
-
用Python写下了一个贪吃蛇大冒险小游戏
不尽相同,若不尽相同则判定贪吃蟒蛇爪子到自身,生还。同时,假定贪吃蟒蛇确实撞墙,及假定两头的x和y经纬度确实天窗体的宽高,若超过则生还。4.2.4 start_kgame算子
-
莫名其妙成网贷“紧急联系人”怎么办?受到电话驱赶可录音留证
与此同时,的平台无需直接联系紧急状况保持直接联系未完成核显,由高利贷人本身分担不显反馈带来的司法风险。的平台为何可以如此“心大”?有消费金融行业的业内人士分析,的平台之所以不核显紧急状况保持直
- 08-272021年第十三批赠送大病扶助保障单位名单
- 08-27流畅度/稳定性大增!Windows 11 2022正式版铁路部门:明年5月完工
- 08-27跟狗狗再熟再彦,也别对它做这些事,否则会攻击你
- 08-27汽车之家被曝大宣告破产?公司紧急回应
- 08-27退货的两件上衣,买卖双方有争议
- 08-27天美T2主美用16年美术科学知识告诉你,如何迭代国风审美设计?
- 08-27洞见数字安全新趋势 2021确实云安全论坛成功召开
- 08-27流浪狗追车,军人一旁拉它,这时第二只狗也来了,军人:全部收编!
- 08-27复星联合,众安、安联等隔离险投保人理赔遭拒,次密接、东三省、全域管控仅不在赔付范围
- 08-27网安服务业新闻串烧17期