Python贪吃蛇源代码

Python代码狂人 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()

程序调试过程中遇到问题,欢迎在本文后留言。

python贪吃蛇源码下载_Python贪吃蛇源代码相关推荐

  1. python web项目源码下载_python web 源码范例

    分享一个自己写的,一个简单的python django web小项目: 项目名称:站点状态监控系统 编写技术:django+js+html+h-ui admin 开发工具:vscode+mysql p ...

  2. 跳一跳python源码下载_Python玩跳一跳【简】

    准备环境: Windows 10: [有] 安卓手机 [有] python(版本建议3以上) adb驱动 依赖安装包 Python下载安装[官网下载并安装] 详情参见 pip安装 pip用于安装依赖包 ...

  3. 跳一跳python源码下载_python 微信跳一跳和源码解读

    刚好周末,想研究一下前阵子很火的微信跳一跳 下面进入正文. 本文适用对象为WIN10系统,安卓用户.目的在于让丝毫没有接触过Python的小伙伴都能成功运行,如果你恰好是这样的对象,那么跟着我开始操作 ...

  4. python如何查看源码_查看“Python-2020-fall”的源代码

    因为以下原因,您没有权限编辑本页: 您所请求的操作仅限于该用户组的用户使用:用户 您可以查看与复制此页面的源代码.== Python程序设计课程主页(2020年秋季学期) == Teacher: [h ...

  5. python小游戏贪吃蛇源码下载

    回车键:开始游戏,空格键:暂停 / 继续,方向键 或 WSAD 键:控制移动方向 下载地址

  6. python剪刀石头布小游戏源码下载_Python Tkinter实现剪刀石头布小游戏

    Python Tkinter实现剪刀石头布小游戏 发布时间:2020-10-26 14:56:52 来源:亿速云 阅读:67 作者:Leah 本篇文章给大家分享的是有关Python Tkinter实现 ...

  7. pythonweb自动化项目源码下载_python+requests接口自动化完整项目设计源码

    一.项目结构 1.新建一个工程(一定要创建工程),工程名称自己定义,如:yoyo_jiekou 2.在工程的跟目录新建一个脚本:run_main.py,用来执行全部用例 3.在工程下创建以下几个pak ...

  8. 兵乓球- 经典街机游戏-python小游戏源码下载

    兵乓球- 经典街机游戏.使用键盘上下移动拨片.第一个错过球的球员输了. 下载地址

  9. 凌波微步-python小游戏源码下载

    点击屏幕拍打你的翅膀.当你飞过屏幕时,注意黑乌鸦. 下载地址

  10. python成绩管理系统源码下载_成绩管理系统.py

    #!/usr/bin/env python #coding:utf-8 __author__='guolimin' ''' 实现简单成绩管理系统 1.添加成绩 -> 添加界面 2.修改成绩 3. ...

最新文章

  1. Python使用matplotlib可视化多个不同颜色的折线图、通过FontProperties为可视化图像配置中文字体可视化、并指定字体大小
  2. Linux登录安全及用户操作审计 ,linux下清理日志脚本
  3. 用户态线程在AI中的应用
  4. 寒武纪抢答2020:一季度同比亏损扩大377%,86%营收大约在下半年
  5. 使用shell定时自动备份mysql数据库
  6. vscode多个光标_21 个VSCode 快捷键,让代码更快,更有趣
  7. WinCE驱动编写小结(转载)
  8. python输出杨辉三角啊二维数组_Java输出杨辉三角形(使用二维数组)
  9. python正则表达式中的转义字符_python 正则表达式之转义字符
  10. 【SaaS - Export项目】用户登录,显示,退出 删除session中的用户信息 销毁session
  11. c语言5的阶乘流程图_10的阶乘(10的阶乘算法流程图)
  12. python 拼音输入法_隐马尔科夫模型python实现简单拼音输入法
  13. 高数 | 精通中值定理 解题套路汇总
  14. java相关优秀博文收藏
  15. windows不能同时连接有线和无线
  16. Bootstrap4 安装方式
  17. 00无人机简介以及课程介绍2020-07-03
  18. 一个用于银联手机支付的GEM介绍
  19. Chrome浏览器双击无反应
  20. 中软国际南京分公司发offer想问问到底咋样,能不能去

热门文章

  1. python实战项目
  2. 鸢尾花(Iris)数据集
  3. Unity内置管线Projector原理分析
  4. 数据结构 实验五(银行叫号系统)
  5. EndNote X7如何在论文中嵌入中文定格式要求的参考文献
  6. 前端JSON转excel下载
  7. Linux 命令行快捷键
  8. 易语言解析html实例,易语言总使用正则表达式实例解析
  9. 营业执照在线生成_潍坊综合保税区发出全省首张覆盖四大市场主体类型的“微信秒批”营业执照...
  10. java上传文件到sftp服务器