如何用Python写贪吃蛇小游戏

手把手教你用Python写一个简单的贪吃蛇小游戏

人生苦短,我用Python!

hello 大家好!我是Mark,一个姓马名克的中国人。

最近呢突然特别想玩一个贪吃蛇的小游戏,可是家里管得严,电脑上面,手机上面都不让下载,可是,对于会Python的我,这根本不是问题。
今天,我们就来看看,如何通过Python来写一个贪吃蛇小游戏!

注意一下,本文适合稍微有一点Python基础的朋友,如果你点进来只是想体验一下Python写的小游戏,可以直接拉到文章最后,有惊喜哟!

首先,我这里调用pygame模块
安装:

pip install pygame

安装完成之后输入

python
import pygame

如果没有报错,说明安装成功。

接下来,我们就开始撸代码啦!

一、导入模块

import pygame, time, random, sys

time模块用于控制时间,sys模块用于退出程序,random模块用于随机生成食物。

二、初始化游戏窗口

'''初始化游戏'''
pygame.init()

# 初始化游戏窗口
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption('贪吃蛇小游戏')

这里创建了一个640 × 480的长方形窗口。
同时,将窗口上方的名称设定为“贪吃蛇小游戏”

三、定义一些需要用的变量名

# 定义速度
fpsclock = pygame.time.Clock()

# 定义字体
font = pygame.font.Font('C:/Windows/Fonts/ARLRDBD.TTF', 80)

# 定义颜色
red = pygame.Color(255, 0, 0)
blue = pygame.Color(0, 0, 255)
balck = pygame.Color(0, 0, 0)
white = pygame.Color(255, 255, 255)
grey = pygame.Color(130, 130, 130)

定义字体的位置,当中有一个“C:/Windows/Fonts/ARLRDBD.TTF”,这个是字体文件的位置,后面的80是字体的大小。

另外注意,下面的颜色,用的是RGB光学三原色,这个只做了解。

四、定义贪吃蛇和食物的基本信息。

'''初始化贪吃蛇和食物'''
# 贪吃蛇的位置
snake_head = [100, 100]

# 贪吃蛇的身体
snake_body = [[80, 100], [60, 100], [
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是用 Python 的一个简单的贪吃蛇小游戏。 ```python import pygame, random # 初始化 Pygame pygame.init() # 游戏窗口的宽度和高度 WINDOW_WIDTH = 600 WINDOW_HEIGHT = 600 # 定义颜色 WHITE = (255, 255, 255) BLACK = (0, 0, 0) GREEN = (0, 255, 0) RED = (255, 0, 0) # 设置游戏窗口 game_display = pygame.display.set_mode((WINDOW_WIDTH, WINDOW_HEIGHT)) pygame.display.set_caption('贪吃蛇') # 设置时钟 clock = pygame.time.Clock() # 蛇的大小和速度 BLOCK_SIZE = 10 SNAKE_SPEED = 20 # 字体 font = pygame.font.SysFont(None, 25) # 定义函数,用于显示消息 def message_to_screen(msg, color): screen_text = font.render(msg, True, color) game_display.blit(screen_text, [WINDOW_WIDTH / 6, WINDOW_HEIGHT / 3]) # 定义函数,用于显示蛇 def snake(block_size, snake_list): for block in snake_list: pygame.draw.rect(game_display, GREEN, [block[0], block[1], block_size, block_size]) # 定义游戏主函数 def game_loop(): game_exit = False game_over = False # 蛇的初始位置和长度 lead_x = WINDOW_WIDTH / 2 lead_y = WINDOW_HEIGHT / 2 lead_x_change = 0 lead_y_change = 0 snake_list = [] snake_length = 1 # 随机生成食物的位置 food_x = round(random.randrange(0, WINDOW_WIDTH - BLOCK_SIZE) / 10.0) * 10.0 food_y = round(random.randrange(0, WINDOW_HEIGHT - BLOCK_SIZE) / 10.0) * 10.0 while not game_exit: # 处理游戏结束的情况 while game_over == True: game_display.fill(WHITE) message_to_screen("游戏结束,按 Q 退出,按 C 重新开始", RED) pygame.display.update() for event in pygame.event.get(): if event.type == pygame.QUIT: game_exit = True game_over = False if event.type == pygame.KEYDOWN: if event.key == pygame.K_q: game_exit = True game_over = False elif event.key == pygame.K_c: game_loop() # 处理游戏中的事件 for event in pygame.event.get(): if event.type == pygame.QUIT: game_exit = True if event.type == pygame.KEYDOWN: if event.key == pygame.K_LEFT: lead_x_change = -BLOCK_SIZE lead_y_change = 0 elif event.key == pygame.K_RIGHT: lead_x_change = BLOCK_SIZE lead_y_change = 0 elif event.key == pygame.K_UP: lead_y_change = -BLOCK_SIZE lead_x_change = 0 elif event.key == pygame.K_DOWN: lead_y_change = BLOCK_SIZE lead_x_change = 0 # 处理边界碰撞和身体碰撞的情况 if lead_x >= WINDOW_WIDTH or lead_x < 0 or lead_y >= WINDOW_HEIGHT or lead_y < 0: game_over = True for block in snake_list[1:]: if block == snake_head: game_over = True # 更新蛇的位置和长度 lead_x += lead_x_change lead_y += lead_y_change snake_head = [lead_x, lead_y] snake_list.append(snake_head) if len(snake_list) > snake_length: del snake_list[0] # 处理吃到食物的情况 if lead_x == food_x and lead_y == food_y: food_x = round(random.randrange(0, WINDOW_WIDTH - BLOCK_SIZE) / 10.0) * 10.0 food_y = round(random.randrange(0, WINDOW_HEIGHT - BLOCK_SIZE) / 10.0) * 10.0 snake_length += 1 # 填充游戏窗口 game_display.fill(WHITE) # 绘制食物和蛇 pygame.draw.rect(game_display, RED, [food_x, food_y, BLOCK_SIZE, BLOCK_SIZE]) snake(BLOCK_SIZE, snake_list) # 更新游戏窗口 pygame.display.update() # 设置游戏速度 clock.tick(SNAKE_SPEED) # 退出 Pygame pygame.quit() quit() # 开始游戏 game_loop() ``` 希望对你有帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值