pygame库实现贪食蛇游戏python代码

代码介绍

贪吃蛇游戏分析

控制蛇的移动:通过上下左右键,控制一条蛇在游戏区域中移动,最初蛇很短,通常由 1 个方块组成。

吃到食物增长:游戏区域中会随机出现食物(例如一个方块),当蛇头触碰到食物时,代表蛇吃到了食物,蛇身体会增长一节,同时得 1 分。

避免越界或碰撞:游戏中需要避免蛇头撞到游戏区域的边界,或者蛇头碰到自己的身体。

策略性移动:随着游戏的进行蛇身增长,需要巧妙地操控蛇的路径,既要吃到食物,又要避免越界碰撞,这变得越来越具挑战性和趣味性。

游戏分数和结束:游戏过程中,需要记录当前得分(即:蛇吃到食物的数量),游戏结束,展示总得分和重新开始游戏或者退出。

代码下载:pygame库实现贪食蛇游戏python代码_计算机代码资源下载

软件:PyCharm

语言:python

工程文件

程序文件

程序编译

运行效果

部分代码展示:

"""贪吃蛇"""
import random
import sys
import time
import pygame
from pygame.locals import *
from collections import deque
SCREEN_WIDTH = 600      # 屏幕宽度
SCREEN_HEIGHT = 480     # 屏幕高度
SIZE = 20               # 小方格大小
LINE_WIDTH = 1          # 网格线宽度
# 游戏区域的坐标范围
SCOPE_X = (0, SCREEN_WIDTH // SIZE - 1)
SCOPE_Y = (2, SCREEN_HEIGHT // SIZE - 1)
# 食物的分值及颜色
FOOD_STYLE_LIST = [(10, (255, 100, 100)), (20, (100, 255, 100)), (30, (100, 100, 255))]
LIGHT = (100, 100, 100)
DARK = (200, 200, 200)      # 蛇的颜色
BLACK = (0, 0, 0)           # 网格线颜色
RED = (200, 30, 30)         # 红色,GAME OVER 的字体颜色
BGCOLOR = (40, 40, 60)      # 背景色
def print_text(screen, font, x, y, text, fcolor=(255, 255, 255)):
    imgText = font.render(text, True, fcolor)
    screen.blit(imgText, (x, y))
# 初始化蛇
def init_snake():
    snake = deque()
    snake.append((2, SCOPE_Y[0]))
    snake.append((1, SCOPE_Y[0]))
    snake.append((0, SCOPE_Y[0]))
    return snake
def create_food(snake):
    food_x = random.randint(SCOPE_X[0], SCOPE_X[1])
    food_y = random.randint(SCOPE_Y[0], SCOPE_Y[1])
    while (food_x, food_y) in snake:
        # 如果食物出现在蛇身上,则重来
        food_x = random.randint(SCOPE_X[0], SCOPE_X[1])
        food_y = random.randint(SCOPE_Y[0], SCOPE_Y[1])
    return food_x, food_y

  • 7
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的贪食蛇Python代码示例,使用的是Pygame实现图形界面: ```python import pygame import random # 定义常量 SCREEN_WIDTH = 640 SCREEN_HEIGHT = 480 GRID_SIZE = 10 SNAKE_COLOR = (0, 255, 0) FOOD_COLOR = (255, 0, 0) # 初始化Pygame pygame.init() screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT)) pygame.display.set_caption("贪食蛇") # 定义贪食蛇类 class Snake: def __init__(self): self.body = [(4, 3), (3, 3), (2, 3)] self.direction = "right" def move(self): head = self.body[0] if self.direction == "right": new_head = (head[0] + 1, head[1]) elif self.direction == "left": new_head = (head[0] - 1, head[1]) elif self.direction == "up": new_head = (head[0], head[1] - 1) elif self.direction == "down": new_head = (head[0], head[1] + 1) self.body.insert(0, new_head) self.body.pop() def turn(self, direction): self.direction = direction def eat_food(self): tail = self.body[-1] self.body.append(tail) # 定义食物类 class Food: def __init__(self): self.pos = (0, 0) self.spawn_food() def spawn_food(self): x = random.randint(0, SCREEN_WIDTH // GRID_SIZE - 1) * GRID_SIZE y = random.randint(0, SCREEN_HEIGHT // GRID_SIZE - 1) * GRID_SIZE self.pos = (x, y) # 定义游戏主循环 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 and snake.direction != "left": snake.turn("right") elif event.key == pygame.K_LEFT and snake.direction != "right": snake.turn("left") elif event.key == pygame.K_UP and snake.direction != "down": snake.turn("up") elif event.key == pygame.K_DOWN and snake.direction != "up": snake.turn("down") # 移动贪食蛇 snake.move() # 判断是否吃到食物 if snake.body[0] == food.pos: snake.eat_food() food.spawn_food() # 绘制背景 screen.fill((0, 0, 0)) # 绘制贪食蛇 for segment in snake.body: pygame.draw.rect(screen, SNAKE_COLOR, (segment[0] * GRID_SIZE, segment[1] * GRID_SIZE, GRID_SIZE, GRID_SIZE)) # 绘制食物 pygame.draw.rect(screen, FOOD_COLOR, (food.pos[0], food.pos[1], GRID_SIZE, GRID_SIZE)) # 更新屏幕 pygame.display.update() # 控制帧率 clock.tick(10) # 运行游戏 if __name__ == "__main__": main() ``` 在运行代码前,需要先安装Pygame。可以使用以下命令进行安装: ``` pip install pygame ``` 运行代码后,按方向键控制贪食蛇的移动,尽量吃到食物。注意,以上代码仅供参考,实际开发中可能需要进行更多的调整和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值