首页 > 其他分享 >12.02贪吃蛇

12.02贪吃蛇

时间:2024-12-29 15:09:55浏览次数:1  
标签:head list direction 12.02 贪吃蛇 snake block pygame

import pygame
import random
import sys

# 初始化pygame
pygame.init()

# 设置屏幕大小
screen_width, screen_height = 640, 480
screen = pygame.display.set_mode((screen_width, screen_height))
pygame.display.set_caption("贪吃蛇游戏")

# 设置颜色
black = (0, 0, 0)
white = (255, 255, 255)
red = (255, 0, 0)

# 设置游戏参数
snake_block = 40
snake_speed = 10 # 增加游戏速度,以提高游戏体验

# 初始化蛇的位置
snake_list = [[50, 50], [40, 50], [30, 50]]
direction = 'RIGHT'

# 初始化食物位置
def generate_food_position():
return [random.randrange(0, screen_width // snake_block) * snake_block,
random.randrange(0, screen_height // snake_block) * snake_block]

food_position = generate_food_position()
food_spawn = True

# 分数
score = 0

# 游戏主循环
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT and direction != 'RIGHT':
direction = 'LEFT'
elif event.key == pygame.K_RIGHT and direction != 'LEFT':
direction = 'RIGHT'
elif event.key == pygame.K_UP and direction != 'DOWN':
direction = 'UP'
elif event.key == pygame.K_DOWN and direction != 'UP':
direction = 'DOWN'

# 更新蛇头位置
if direction == 'RIGHT':
snake_head = [snake_list[-1][0] + snake_block, snake_list[-1][1]]
elif direction == 'LEFT':
snake_head = [snake_list[-1][0] - snake_block, snake_list[-1][1]]
elif direction == 'UP':
snake_head = [snake_list[-1][0], snake_list[-1][1] - snake_block]
elif direction == 'DOWN':
snake_head = [snake_list[-1][0], snake_list[-1][1] + snake_block]

# 确保蛇头和食物的位置都是 snake_block 的倍数
snake_head[0] = (snake_head[0] // snake_block) * snake_block
snake_head[1] = (snake_head[1] // snake_block) * snake_block

# 检查是否撞到墙壁或自己
if (snake_head[0] < 0 or snake_head[0] >= screen_width or
snake_head[1] < 0 or snake_head[1] >= screen_height or
snake_head in snake_list):
running = False

# 检查是否吃到食物
if snake_head == food_position:
score += 1
food_spawn = False
else:
snake_list.pop(0)

snake_list.append(snake_head)

# 生成新食物
if not food_spawn:
food_position = generate_food_position()
food_spawn = True

# 绘制游戏画面
screen.fill(black)

# 绘制蛇
for segment in snake_list:
pygame.draw.rect(screen, white, [segment[0], segment[1], snake_block, snake_block])

# 绘制食物
pygame.draw.rect(screen, red, [food_position[0], food_position[1], snake_block, snake_block])

# 显示分数
font = pygame.font.SysFont(None, 36) # 使用默认字体
score_text = font.render(f"Score: {score}", True, white)
screen.blit(score_text, [10, 10])

pygame.display.update()
pygame.time.Clock().tick(snake_speed)

pygame.quit()

标签:head,list,direction,12.02,贪吃蛇,snake,block,pygame
From: https://www.cnblogs.com/luoqingci/p/18638908

相关文章

  • 23. 贪吃蛇
    贪吃蛇是一个经典游戏,蛇的身体由若干方格连接而成,身体随蛇头移动。蛇头触碰到食物时,蛇的长度会增加一格。蛇头和身体的任一方格或者游戏版图边界碰撞时,游戏结束。下面让我们来完成贪吃蛇游戏的模拟。给定一个N*M的数组arr,代表N*M个方格组成的版图,贪吃蛇每次移动一个方格.若......
  • 使用canvas实现一个贪吃蛇小游戏
    创建一个贪吃蛇游戏涉及到很多步骤,以下是一个简化版的贪吃蛇游戏实现方案,使用HTML5的<canvas>元素。HTML首先,在HTML中创建一个<canvas>元素。<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>贪吃蛇游戏</title><s......
  • Java实现贪吃蛇游戏
    目录一、项目结构二、实现步骤1.创建Snake类2.创建Food类3.创建GameBoard类4.创建SnakeGame类三、总结贪吃蛇是一个经典的电子游戏,它的玩法非常简单,但又充满了挑战。玩家通过控制蛇的移动,吃到食物并不断成长,目标是尽可能长时间生存。本文将介绍如何使用J......
  • 阿里云百炼大模型生成贪吃蛇小游戏
    阿里云百炼大模型生成贪吃蛇小游戏为了在贪吃蛇游戏中添加背景音乐,我们可以使用Pygame的mixer模块。以下是修改后的代码,包含了背景音乐的加载和播放功能:安装Pygame(如果你还没有安装):pipinstallpygame准备音乐文件:确保你有一个音乐文件(例如background_music.mp3),并将......
  • 【童年经典小游戏】使用Python实现经典贪吃蛇游戏
    文章目录使用Python实现经典贪吃蛇游戏简介实现思路与准备游戏框架与库选择游戏基本逻辑代码实现完整代码代码关键点解析初始化与游戏窗口贪吃蛇的表示与移动食物的生成碰撞检测与游戏结束运行代码中文不显示问题解决拓展与优化建议总结使用Python实现经典贪吃蛇游......
  • Java项目实战—JavaFX 贪吃蛇游戏设计与实现(附项目源代码地址)
    该项目gitee地址:https://gitee.com/jflyfox/GameSnake.git一、游戏概述贪吃蛇是一款经典的街机游戏,玩家通过控制蛇的移动方向,使其吃到食物并不断增长身体长度,同时避免撞到墙壁或自身身体。本设计文档描述了一个使用JavaFX框架开发的贪吃蛇游戏的设计思路和实现细节。二、游戏功......
  • 数据结构:贪吃蛇详解
    目录一.地图的设计1.字符与坐标:2.本地化(头文件):3.类项:4.setlocale函数:(1)函数原型:(2)使用:5.宽字符的打印:(1)宽字符是什么:(2)打印:6.地图的实现和打印:(1)具体代码与预期实现效果:(2)解释:二.游戏逻辑与大体框架1.游戏逻辑与大体框架:2.游戏初步实现(GameStart函数):(1)欢迎界面......
  • 平院贪吃蛇大师
    www是平顶山学院贪吃蛇大师。这天他发现了一个新的贪吃蛇游戏,里面的贪吃蛇居然可以斜着走! 但是这个贪吃蛇的地图居然是无限大!但他发现了一个规律:想要使自己的贪吃蛇空间利用率最高,最好的方法就是叠着走,如图所示:在这个地图里,将坐标标记为为:x/y,代表第x行第y列。www想要知道......
  • 基于51单片机和LCD1602的自制独立按键控制的小游戏《贪吃蛇》
    目录系列文章目录前言一、效果展示二、原理分析三、各模块代码1、定时器02、八位独立按键3、LCD1602四、主函数附录A:编程遇到的问题总结系列文章目录前言《贪吃蛇》,一款经典的、怀旧的小游戏,单片机入门必写程序。基于51单片机和8X8LED点阵屏(板载74HC595驱动)的矩......
  • 基于51单片机和16X16LED点阵屏(MAX7219驱动)的自制独立按键控制的小游戏《贪吃蛇》
    目录系列文章目录前言一、效果展示二、原理分析三、各模块代码1、定时器02、自制独立按键(8位)3、16X16LED点阵屏(MAX7219驱动)四、主函数总结系列文章目录前言《贪吃蛇》,一款经典的、怀旧的小游戏,单片机入门必写程序。基于51单片机和8X8LED点阵屏(板载74HC595驱动)的......