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

9.13贪吃蛇

时间:2025-01-02 15:19:18浏览次数:1  
标签:direction 20 self 9.13 贪吃蛇 pygame position def

import pygame
import random

# 初始化 pygame
pygame.init()

# 颜色定义
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)
GREEN = (0, 255, 0)
RED = (255, 0, 0)

# 游戏窗口大小
WINDOW_WIDTH = 800
WINDOW_HEIGHT = 600

# 创建游戏窗口
game_display = pygame.display.set_mode((WINDOW_WIDTH, WINDOW_HEIGHT))
pygame.display.set_caption('贪吃蛇游戏')

# 贪吃蛇类
class Snake:
def __init__(self):
self.length = 1
self.positions = [((WINDOW_WIDTH / 2), (WINDOW_HEIGHT / 2))]
self.direction = "RIGHT"
self.color = GREEN

def get_head_position(self):
return self.positions[0]

def turn(self, direction):
if direction == "RIGHT" and not self.direction == "LEFT":
self.direction = direction
if direction == "LEFT" and not self.direction == "RIGHT":
self.direction = direction
if direction == "UP" and not self.direction == "DOWN":
self.direction = direction
if direction == "DOWN" and not self.direction == "UP":
self.direction = direction

def move(self):
cur = self.get_head_position()
x, y = cur
if self.direction == "RIGHT":
x += 20
if self.direction == "LEFT":
x -= 20
if self.direction == "UP":
y -= 20
if self.direction == "DOWN":
y += 20
self.positions.insert(0, (x, y))
if len(self.positions) > self.length:
self.positions.pop()

def eat(self):
self.length += 1

def draw(self, surface):
for p in self.positions:
pygame.draw.rect(surface, self.color, pygame.Rect(p[0], p[1], 20, 20))

# 食物类
class Food:
def __init__(self):
self.position = (0, 0)
self.color = RED
self.randomize_position()

def randomize_position(self):
self.position = (random.randint(0, (WINDOW_WIDTH - 20) // 20) * 20, random.randint(0, (WINDOW_HEIGHT - 20) // 20) * 20)

def draw(self, surface):
pygame.draw.rect(surface, self.color, pygame.Rect(self.position[0], self.position[1], 20, 20))

def main():
clock = pygame.time.Clock()
snake = Snake()
food = Food()

while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
quit()
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_RIGHT:
snake.turn("RIGHT")
if event.key == pygame.K_LEFT:
snake.turn("LEFT")
if event.key == pygame.K_UP:
snake.turn("UP")
if event.key == pygame.K_DOWN:
snake.turn("DOWN")

snake.move()
head = snake.get_head_position()
if head[0] < 0 or head[0] >= WINDOW_WIDTH or head[1] < 0 or head[1] >= WINDOW_HEIGHT:
pygame.quit()
quit()

if head == food.position:
snake.eat()
food.randomize_position()

game_display.fill(BLACK)
snake.draw(game_display)
food.draw(game_display)
pygame.display.flip()
clock.tick(10)

if __name__ == "__main__":
main()

标签:direction,20,self,9.13,贪吃蛇,pygame,position,def
From: https://www.cnblogs.com/jais/p/18647819

相关文章

  • 2024.9.13
    HTML 编辑器VSCodeVisualStudioCode(简称VSCode)是一个由微软开发,同时支持Windows、Linux和macOS等操作系统且开放源代码的代码编辑器,编辑器中内置了扩展程序管理的功能。VSCode安装教程参考:https://www.runoob.com/vscode/vscode-tutorial.html步骤1:新建HTML......
  • 12.02贪吃蛇
    importpygameimportrandomimportsys#初始化pygamepygame.init()#设置屏幕大小screen_width,screen_height=640,480screen=pygame.display.set_mode((screen_width,screen_height))pygame.display.set_caption("贪吃蛇游戏")#设置颜色black=(0,0,0)white=(255,......
  • 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想要知道......