python简单贪吃蛇开发
作者:wwxy261 发布时间:2021-04-24 18:47:56
标签:python,贪吃蛇
本文实例为大家分享了python简单贪吃蛇的具体代码,供大家参考,具体内容如下
import sys
import random
import pygame
from pygame.locals import *
# 目标方块的颜色 红色
redColor = pygame.Color(255, 0, 0)
# 游戏界面的背景颜色 纯黑色
blackColor = pygame.Color(0, 0, 0)
# 贪吃蛇的颜色 白色
whiteColor = pygame.Color(255, 255, 255)
# 定义游戏结束的函数
def gameOver():
pygame.quit()
sys.exit()
# 定义main函数
def main():
# 初始化pygame
pygame.init()
# 定义一个控制速度的函数
fpsClock = pygame.time.Clock()
# 创建显示层
playSurface = pygame.display.set_mode((640,480)) # 界面的大小
pygame.display.set_caption('贪吃蛇')
# 初始化蛇的位置
snake_position=[100,100]
# 初始化蛇的长度
snake_body = [[100,100],[80,100],[60,100]]
# 初始化目标方块的位置
target_position = [300,300]
# 目标方块的状态
target_flag = 1
# 初始化一个方向
direction = 'right'
# 定义蛇的方向变量
changeDirection = direction
while True:
# pygame的交互模块和事件队列
for event in pygame.event.get():
# 是否推出
if event.type == QUIT:
pygame.quit()
sys.exit()
# 判断键盘事件
elif event.type == KEYDOWN:
if event.key == K_RIGHT:
changeDirection = 'right'
if event.key == K_LEFT:
changeDirection = 'left'
if event.key == K_UP:
changeDirection = 'up'
if event.key == K_DOWN:
changeDirection = 'down'
if event.key == K_SPACE:
pygame.event.post(pygame.event.Event(QUIT))
# 根据键盘反应确定方向
if changeDirection == 'left' and not direction == 'right':
direction = changeDirection
if changeDirection == 'right' and not direction == 'left':
direction = changeDirection
if changeDirection == 'up' and not direction == 'down':
direction = changeDirection
if changeDirection == 'down' and not direction == 'up':
direction = changeDirection
# 根据方向移动蛇头的坐标
if direction == 'right':
snake_position[0] += 20
if direction == 'left':
snake_position[0] -= 20
if direction == 'up':
snake_position[1] -= 20
if direction == 'down':
snake_position[1] += 20
# 蛇与自身的碰撞检测
for body in snake_body:
if snake_position[0] == body[0] and snake_position[1] == body[1]:
gameOver()
# 蛇移动
snake_body.insert(0,list(snake_position))
if snake_position[0] == target_position[0] and snake_position[1] == target_position[1]:
target_flag = 0
else:
# 如果没吃到,蛇尾弹出栈
snake_body.pop()
# 如果吃掉目标方块,重新生成一个目标方块
if target_flag == 0:
x = random.randrange(1,32)
y = random.randrange(1,24)
# 20*20的像素为一个小矩形
target_position = [int(x*20),int(y*20)]
target_flag = 1
# 绘制显示层
playSurface.fill(blackColor)
# 绘制蛇
for position in snake_body:
pygame.draw.rect(playSurface, redColor, Rect(position[0],position[1],20,20))
# 画目标方块
pygame.draw.rect(playSurface, whiteColor, Rect(target_position[0], target_position[1], 20, 20))
pygame.display.flip()
# 判断死亡
if snake_position[0] > 620 or snake_position[1] < 0:
gameOver()
elif snake_position[1] > 460 or snake_position[1] < 0:
gameOver()
# 控制游戏的速度
fpsClock.tick(5)
if __name__ == '__main__':
main()
来源:https://blog.csdn.net/wwxy1995/article/details/79998066


猜你喜欢
- python虚拟环境迁移:注意事项:直接将虚拟环境复制到另一台机器,直接执行是会有问题的。那么可以采用以下办法:思路:将机器1虚拟环境下的包
- 一、实现代码1.sql-- phpMyAdmin SQL Dump-- version 4.5.1-- http://www.phpmyad
- 1. floor 函数1.1 floor 函数的作用floor() 函数的作用是返回小于等于该值的最大整数举例说明:select floor
- 问题描述 windows错误安装方法:pip3 install numpy这种情况下虽然安装成功,但是在import numpy时会出现如下
- function getExplorerInfo() { var explorer = window.navigator.user
- 什么多态:同一事物有多种形态为何要有多态=》多态会带来什么样的特性,多态性多态性指的是可以在不考虑对象具体类型的情况下而直接使用对象多态指的
- 我的经历前几天有人问我这个问题。我说GET是用于获取数据的,POST,一般用于将数据发给服务器之用。这个答案好像并不是他想要的。于是他继续追
- call_user_func函数类似于一种特别的调用函数的方法,使用方法如下: function a($b,$c) { echo $b; e
- 路由跳转了但界面不显示没有在父路由加上router-view,加上下面的代码即可。<!-- 路由匹配到的组件将显示在这里 -->
- #coding:utf-8 import urllib.request import xml.dom.minidom import sqli
- 继续flask的学习之旅。今天介绍flask的登陆管理模块,还记得上一篇中的blog小项目么,登录是咱们自己写的验证代码,大概有以下几个步骤
- 正确使用字体和颜色可以让网页内容更易阅读,下面我们来看看具体的优化措施。留意颜色的对比对于视力不太好的人或者对于不太好的显示设备来说,黑地白
- 多进程共享变量和获得结果由于工程需求,要使用多线程来跑一个程序。但是因为听说python的多线程是假的,于是使用多进程,反正任务需要共享的参
- 索引的目的在于提高查询效率,可以类比字典,如果要查“mysql”这个单词,我们肯定需要定位到m字母,然后从下往下找到y字母,再找到剩下的sq
- asp学习入门经验介绍,本文初步介绍了初学asp的一些相关知识,如VBScript语法简介,循环控制语句的使用,asp数据库的简单操作查询,
- by yemoo有时在编写网页代码时发现,img底部莫名奇妙多出大约3px的空白,无论怎么调节css都不可以,今天再次遇到此问题,网上看了一
- 日志文件一般是按天产生,则通过在程序中判断文件的产生日期与当前时间,更换监控的日志文件程序只是简单的示例一下,监控test1.log 10秒
- 本文实例讲述了Django框架静态文件使用/中间件/禁用ip功能。分享给大家供大家参考,具体如下:静态文件一、静态文件的使用静态文件:网页中
- FreeType库是一个完全免费(开源)的、高质量的且可移植的字体引擎,它提供统一的接口来访问多种字体格式文件,包括TrueType, Op
- 前言PyTorch作为一款深度学习框架,已经帮助我们实现了很多很多的功能了,包括数据的读取和转换了,那么这一章节就介绍一下PyTorch内置