python小游戏据说这是一款还原度超高的小游戏,你感受下。
前言
哈喽,大家好呀~欢迎大家阅读小编的文章!
又到了每日游戏更新系列,看到这么如下.gif是不是让你想起来了童年吖~
贪吃蛇 的人气可谓是经久不衰,有过了许多不同的版本,但大体游戏规则都是控制蛇的向,
寻找吃的东西,每吃一口就能得到一定的积分,而且蛇的身子会越吃越长,身子越长玩的难度
就越大,不能碰墙,不能咬到自己的身体,更不能咬自己的尾巴,还要注意其他的蛇!
哪个版本的贪吃蛇是你的童年
是这个
嘿嘿 ~~~
好了,放图片路
正文:
就是这个大工程今天带大家做一款 Python 版本的贪吃蛇 游戏!
直接放代码import pygame as pg from random import randint import sys from pygame.locals import * FPS = 6 # 画面帧数,代表蛇的移动速率 window_width = 600 window_height = 500 cellsize = 20 cell_width = int(window_width / cellsize) cell_height = int(window_height / cellsize) BGcolor = (0, 0, 0) BLUE = (0, 0, 255) RED = (255, 0, 0) apple_color = (255, 0, 0) snake_color = (0, 150, 0) GREEN = (0, 255, 0) WHITE = (255, 255, 255) DARKGRAY = (40, 40, 40) UP = "up" DOWN = "down" LEFT = "left" RIGHT = "right" HEAD = 0 def main(): # 有函数 global FPSclock, window, BASICFONT pg.init() FPSclock = pg.time.Clock() window = pg.display.set_mode((window_width, window_height)) BASICFONT = pg.font.Font("freesansbold.ttf", 18) pg.display.set_caption("贪吃蛇") showStartScreen() while True: runGame() showGameOverScreen() def runGame(): # 运行游戏函数 startx = randint(5, cell_width - 6) starty = randint(5, cell_height - 6) snakeCoords = [{"x": startx, "y": starty}, {"x": startx - 1, "y": starty}, {"x": startx - 2, "y": starty}] direction = RIGHT apple = getRandomLocation() while True: for event in pg.event.get(): if event.type == QUIT: terminate() elif event.type == KEYDOWN: if event.key == K_LEFT and direction != RIGHT: direction = LEFT elif event.key == K_RIGHT and direction != LEFT: direction = RIGHT elif event.key == K_UP and direction != DOWN: direction = UP elif event.key == K_DOWN and direction != UP: direction = DOWN elif event.key == K_ESCAPE: terminate() if snakeCoords[HEAD]["x"] == -1 or snakeCoords[HEAD]["x"] == cell_width or snakeCoords[HEAD]["y"] == -1 or snakeCoords[HEAD]["y"] == cell_height: return for snakeBody in snakeCoords[1:]: if snakeBody["x"] == snakeCoords[HEAD]["x"] and snakeBody["y"] == snakeCoords[HEAD]["y"]: return if snakeCoords[HEAD]["x"] == apple["x"] and snakeCoords[HEAD]["y"] == apple["y"]: apple = getRandomLocation() else: del snakeCoords[-1] if direction == UP: newHead = {"x": snakeCoords[HEAD]["x"], "y": snakeCoords[HEAD]["y"] - 1} elif direction == DOWN: newHead = {"x": snakeCoords[HEAD]["x"], "y": snakeCoords[HEAD]["y"] + 1} elif direction == LEFT: newHead = {"x": snakeCoords[HEAD]["x"] - 1, "y": snakeCoords[HEAD]["y"]} elif direction == RIGHT: newHead = {"x": snakeCoords[HEAD]["x"] + 1, "y": snakeCoords[HEAD]["y"]} snakeCoords.insert(0, newHead) window.fill(BGcolor) drawGrid() drawSnake(snakeCoords) drawApple(apple) drawScore(len(snakeCoords) - 3) pg.display.update() FPSclock.tick(FPS) def drawPressKeyMsg(): # 游戏开始提示信息 pressKeySurf = BASICFONT.render("press a key to play", True, BLUE) pressKeyRect = pressKeySurf.get_rect() pressKeyRect.topleft = (window_width - 200, window_height - 30) window.blit(pressKeySurf, pressKeyRect) def checkForKeyPress(): # 检查是否触发按键 if len(pg.event.get(QUIT)) > 0: terminate() keyUpEvents = pg.event.get(KEYUP) if len(keyUpEvents) == 0: return None if keyUpEvents[0].key == K_ESCAPE: terminate() return keyUpEvents[0].key def showStartScreen(): # 开始画面 window.fill(BGcolor) titleFont = pg.font.Font("freesansbold.ttf", 100) titleSurf = titleFont.render("snake!", True, RED) titleRect = titleSurf.get_rect() titleRect.center = (window_width / 2, window_height / 2) window.blit(titleSurf, titleRect) drawPressKeyMsg() pg.display.update() while True: if checkForKeyPress(): pg.event.get() return def terminate(): # 退出 pg.quit() sys.exit() def getRandomLocation(): # 出现位置 return {"x": randint(0, cell_width - 1), "y": randint(0, cell_height - 1)} def showGameOverScreen(): # 游戏结束 gameOverFont = pg.font.Font("freesansbold.tff", 150) gameSurf = gameOverFont.render("Game", True, WHITE) overSurf = gameOverFont.render("over", True, WHITE) gameRect = gameSurf.get_rect() overRect = overSurf.get_rect() gameRect.midtop = (window_width / 2, 10) overRect.midtop = (window_width / 2, gameRect.height10 + 25) window.blit(gameSurf, gameRect) window.blit(overSurf, overRect) drawPressKeyMsg() pg.display.update() pg.time.wait(500) checkForKeyPress() while True: if checkForKeyPress(): pg.event.get() return def drawScore(score): # 显示分数 scoreSurf = BASICFONT.render("Score:%s" % (score), True, WHITE) scoreRect = scoreSurf.get_rect() scoreRect.topleft = (window_width - 120, 10) window.blit(scoreSurf, scoreRect) def drawSnake(snakeCoords): # 画蛇 for coord in snakeCoords: x = coord["x"] * cellsize y = coord["y"] * cellsize snakeSegmentRect = pg.Rect(x, y, cellsize, cellsize) pg.draw.rect(window, snake_color, snakeSegmentRect) snakeInnerSegmentRect = pg.Rect(x + 4, y + 4, cellsize - 8, cellsize - 8) pg.draw.rect(window, GREEN, snakeInnerSegmentRect) def drawApple(coord): x = coord["x"] * cellsize y = coord["y"] * cellsize appleRect = pg.Rect(x, y, cellsize, cellsize) pg.draw.rect(window, apple_color, appleRect) def drawGrid(): # 画方格 for x in range(0, window_width, cellsize): pg.draw.line(window, DARKGRAY, (x, 0), (x, window_height)) for y in range(0, window_height, cellsize): pg.draw.line(window, DARKGRAY, (0, y), (window_width, y)) if __name__ == "__main__": main() 复制代码效果展示:
结尾:
不管玩得多么纯熟,技术多么高超,但最终都会是听到贪食蛇的一声惨叫。记住:小蛇韬光养晦,中蛇欺软怕硬,大蛇明哲保身哟~
最后文章就写到这里结束啦~大家喜欢的记得点点赞
八荒寻仙录等级冲榜技巧之技巧篇按照物品篇内容准备好物品后,按照主线去做任务,也不要多打副本次数,再达到102级经验方舟开启时绝对不会卡住!主线任务第一天的赏金任务,诛魔塔都是给的固定经验,在这些全做完的情况下再
小鲁班速度爆增,妥妥地饱餐一顿大螃蟹今天好呀!今天好呀!我是小卤蛋,起床干饭,凯爹今天我要吃河蟹,红buff,蓝buff,再加3波兵线。小卤蛋,凯爹我今天要去干远古龙爸爸,今天早餐自己去吃,凯爹我就不伺候你了!好的,
英雄联盟双城之战出现的英雄英雄联盟双城之战是英雄联盟官方动画剧集,讲述的是在充满蒸汽朋克气息的乌托邦皮尔特沃夫和由化学品驱动的地下城祖安中,蔚和金克丝两姐妹,她们在一场激烈的冲突后发现两个人站在了彼此的对立
新秦时明月天明老妈美艳动人,月儿温柔可爱,赤练改动最大今天突然瞅见了新秦时明月更新的消息,一刹间觉得有人之年活久见了。作为玄机以前的亲生儿子,如今秦时明月早已经爹不疼,妈不爱。怀揣着激动的内心,压抑不住的兴奋。没点之前笔者内心是相当的
立场杯首日看点十足!4AM总排名第四,IFTY展现强大ROLL实力众所周知现如今电子竞技行业可谓是充满了话题度,期间诸多专业赛事的成功举办也令所有网友大饱眼福。随着近日新一年的开启绝地求生大逃杀也随即迎来全新征程,万众瞩目的立场杯赛事正是拉开序幕
全员射击这沙雕角色是射击游戏?竟然是益智游戏原标题FTY沙雕益智手游shootemall让子弹再多飞一会这是一款让子弹飞向所有敌人的游戏,沙雕的造型,益智的玩法,超级简单的内容令人爱不释手,无法自拔。它就是由FTY推出的以沙
原神调整后的4位女角色预览,琴包得严严实实,莫娜已丑出天际2。4版本更新了,但现在大家讨论得最多的不是新的游戏内容,而是官方在不久前放的一封临时公告,也就是关于部分角色的外观调整公告。这份公告表示,游戏中的琴莫娜安柏罗莎莉亚等几名角色将在
原神罗莎莉亚角色分析罗莎莉亚的机制是几乎没有缺点的冰系E瞬发Q脱手固有天赋给全队加暴击率大招60能量E技能CD短产球多基础攻击力四星前列突破还是攻击力加成。官方给罗莎莉亚的定位是多功能输出角色,事实上
原神2。4角色外观调整和谐莫娜琴罗莎莉亚安柏新老皮肤全对比原神2。4版本上线之际,官方今日早间忽然发布了部分角色外观表现调整说明的消息,莫娜琴安柏和罗莎莉亚这四位蒙德的老朋友,将在2。4和2。5版本中先后迎来从立绘到过场动画的全方位调整和
原神部分女角色外观调整,第一次感觉补偿1200原石不香了我已经有过一次旅行。所以,你也要像我一样抵达终点,才能在自己的眼中,留下这个世界的沉淀。大家好,我是boyue,感谢打开这篇原神游戏文。boyue会经常分享一些原神资讯与攻略给大家
原神攻略申鹤天赋命之座武器圣遗物阵容等详细讲解我是尤雪落儿,今天给大家带了申鹤的全方位讲解!文章很长,重点是天赋解析,如有错误,欢迎指正。接下来,进入正题旅行者们好呀,今天为大家介绍的是师从留云借风真君的仙家弟子一申鹤。申鹤长