欢迎访问楠楠博客,专注于网络营销类百科知识解答!
当前位置:楠楠博客 >> 软件编程 >> 编程 >> 详情

贪吃蛇简单的编程语音

2024-02-17 编程 责编:楠楠博客 2877浏览

以下是一个使用Python编写的简单贪吃蛇游戏的代码:

贪吃蛇简单的编程语音

python

import pygame

import random

# 蛇类

class Snake():

# 初始化蛇的位置、速度和长度

def __init__(self):

self.length = 1

self.positions = [((SCREEN_WIDTH // 2), (SCREEN_HEIGHT // 2))]

self.direction = random.choice([UP, DOWN, LEFT, RIGHT])

self.color = (0, 255, 0)

self.score = 0

# 获取头部位置

def head_position(self):

return self.positions[0]

# 移动蛇

def move(self):

cur = self.head_position()

x, y = self.direction

new = (((cur[0] + (x*GRIDSIZE)) % SCREEN_WIDTH), (cur[1] + (y*GRIDSIZE)) % SCREEN_HEIGHT)

if len(self.positions) > 2 and new in self.positions[2:]:

self.reset()

else:

self.positions.insert(0, new)

if len(self.positions) > self.length:

self.positions.pop()

# 吃食物

def eat(self):

self.length += 1

self.score += 1

# 重置蛇的位置和长度

def reset(self):

self.length = 1

self.positions = [((SCREEN_WIDTH // 2), (SCREEN_HEIGHT // 2))]

self.direction = random.choice([UP, DOWN, LEFT, RIGHT])

self.score = 0

# 绘制蛇

def draw(self, surface):

for p in self.positions:

pygame.draw.rect(surface, self.color, (p[0], p[1], GRIDSIZE, GRIDSIZE))

# 食物类

class Food():

# 初始化食物的位置

def __init__(self):

self.position = (0, 0)

self.color = (255, 0, 0)

self.randomize_position()

# 随机生成食物的位置

def randomize_position(self):

self.position = (random.randint(0, GRID_WIDTH-1) * GRIDSIZE, random.randint(0, GRID_HEIGHT-1) * GRIDSIZE)

# 绘制食物

def draw(self, surface):

pygame.draw.rect(surface, self.color, (self.position[0], self.position[1], GRIDSIZE, GRIDSIZE))

# 初始化pygame

pygame.init()

# 定义常量

SCREEN_WIDTH = 480

SCREEN_HEIGHT = 480

GRIDSIZE = 20

GRID_WIDTH = SCREEN_WIDTH // GRIDSIZE

GRID_HEIGHT = SCREEN_HEIGHT // GRIDSIZE

# 定义方向常量

UP = (0, -1)

DOWN = (0, 1)

LEFT = (-1, 0)

RIGHT = (1, 0)

# 创建游戏窗口

window = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))

pygame.display.set_caption("贪吃蛇")

# 初始化蛇和食物

snake = Snake()

food = Food()

# 游戏循环

running = True

clock = pygame.time.Clock()

while running:

for event in pygame.event.get():

if event.type == pygame.QUIT:

running = False

# 监听方向键

elif event.type == pygame.KEYDOWN:

if event.key == pygame.K_UP:

snake.direction = UP

elif event.key == pygame.K_DOWN:

snake.direction = DOWN

elif event.key == pygame.K_LEFT:

snake.direction = LEFT

elif event.key == pygame.K_RIGHT:

snake.direction = RIGHT

snake.move()

if snake.head_position() == food.position:

snake.eat()

food.randomize_position()

# 绘制游戏界面

window.fill((0, 0, 0))

snake.draw(window)

food.draw(window)

pygame.display.update()

clock.tick(10)

# 退出游戏

pygame.quit()

本站申明:楠楠博客为网络营销类百科展示网站,网站所有信息均来源于网络,若有误或侵权请联系本站!
为您推荐
  • 乐高编程课程的学习内容主要围绕机器人编程、计算思维培养和跨学科知识应用展开,通过乐高教育系列套件(如LEGO Education SPIKE Prime、WeDo 2.0、MINDSTORMS EV3)实现理论与实践的结合。以下是详细分析:一、核心学习模块1. 编程基
    2025-12-14 编程 8322浏览
  • 针对如皋数控编程培训三轴编程的需求,以下为专业分析及推荐资源:一、如皋本地三轴编程培训机构推荐如皋地区数控培训资源主要集中在职业技术学校和专业培训机构,以下为经过筛选的优质机构: 机构名称 培训内容
    2025-12-14 编程 4524浏览
栏目推荐
  • 学习编程是一个系统化的过程,需要从基础语法、逻辑思维、算法训练到实战项目逐步深入。以下为专业建议的书籍分类及推荐,帮助不同阶段的学习者高效掌握编程技能。 类别 书籍名称 作者 适合人群 学习目标
    2025-10-23 编程 5594浏览
  • 自动激光编程软件的单价受多种因素影响,包括品牌、功能模块、授权模式、行业应用等。以下为当前市场上的典型价格范围和影响因素分析: 分类 价格区间(人民币) 典型品牌 特点 基础型软件 5,000 - 20,000元
    2025-10-22 编程 5631浏览
  • 昆阳镇作为云南昆明市的一个重要城镇,近年来随着信息技术的快速发展,编程培训市场逐渐兴起。编程培训机构的排名通常依据课程质量、师资力量、学员反馈、就业率等综合因素进行评估,但需注意排名结果可能因数据来源
    2025-10-22 编程 8672浏览
栏目热点
全站推荐
  • 在抖音上调出黑色背景主要涉及深色模式设置或拍摄特效的应用。以下是具体操作方法及相关扩展说明:一、启用深色模式(系统级设置)抖音自身未提供独立的黑色主题开关,但可通过手机系统设置实现:操作系统操作路径生
    2025-12-20 抖音 4961浏览
  • 李天佑(MC天佑)未在快手复出的核心原因,源于2018年2月的全网封禁事件。根据国家网信办通报,其直播内容涉及低俗价值观传播、教唆青少年吸毒言论等问题,被列为首批网络主播黑名单主体,实施跨平台联合惩戒。以下从政
    2025-12-20 快手 9964浏览
  • 认识超级战队主播需结合社交平台特性、商业合作规则及粉丝行为模式,需从平台选择、互动策略、身份验证三方面系统化操作。超级战队主播通常指职业化团队运作的头部主播,集中于电竞、娱乐、电商领域,其核心特征为高
    2025-12-20 主播 6708浏览
友情链接
底部分割线