【Python】用Python实现简易版贪吃蛇游戏【附完整代码】

贪吃蛇是一个经典的小游戏,核心逻辑包括蛇的移动、食物的生成与获取、以及碰撞检测。

import random
import time
import os

# 初始化屏幕
os.system('cls' if os.name == 'nt' else 'clear')

# 定义屏幕大小
width, height = 20, 17

# 定义蛇的初始位置和长度
snake_pos = [10, 10]
snake_body = [[10, 10], [9, 10], [8, 10]]
# 定义食物的位置
food_pos = [random.randrange(1, width//2) * 2, random.randrange(1, height//2) * 2]
food_spawn = True

# 定义蛇的方向
direction = 'RIGHT'
change_to = direction

# 游戏主循环
while True:
    # 显示蛇和食物
    print("贪吃蛇游戏")
    for pos in snake_body:
        print("O", end=" ")
    print()
    print("贪吃蛇的位置: ", snake_pos)
    print("食物的位置: ", food_pos)
    
    # 获取用户输入
    key = input("请输入方向键(W-A-S-D): ").upper()
    
    # 检查用户输入是否有效
    if key in ['W', 'A', 'S', 'D']:
        change_to = key
    
    # 确定蛇的方向
    if change_to == 'W' and direction != 'S':
        direction = 'UP'
    elif change_to == 'A' and direction != 'E':
        direction = 'LEFT'
    elif change_to == 'S' and direction != 'N':
        direction = 'DOWN'
    elif change_to == 'D' and direction != 'W':
        direction = 'RIGHT'
    
    # 移动蛇
    if direction == 'UP':
        snake_pos[1] -= 1
    elif direction == 'DOWN':
        snake_pos[1] += 1
    elif direction == 'LEFT':
        snake_pos[0] -= 1
    elif direction == 'RIGHT':
        snake_pos[0] += 1
    
    # 蛇身体增长
    snake_body.insert(0, list(snake_pos))
    if snake_pos == food_pos:
        food_spawn = False
    else:
        snake_body.pop()
    
    # 食物随机重新生成
    if not food_spawn:
        food_pos = [random.randrange(1, width//2) * 2, random.randrange(1, height//2) * 2]
    food_spawn = True
    
    # 检查游戏是否结束
    if snake_pos[0] >= width or snake_pos[0] < 0 or snake_pos[1] >= height or snake_pos[1] < 0:
        print("游戏结束!")
        break
    
    # 稍作延迟
    time.sleep(0.1)

代码解析:

  1. 初始化屏幕:清屏,准备新的游戏。
  2. 定义屏幕大小:定义游戏区域的宽度和高度。
  3. 定义蛇的初始位置和长度:设定蛇的起始位置和初始长度。
  4. 定义食物的位置:在游戏区域内随机生成食物的位置。
  5. 定义蛇的方向:设定蛇的初始移动方向。
  6. 游戏主循环:游戏的主要循环,处理用户输入、蛇的移动、食物的生成和碰撞检测。
  7. 显示蛇和食物:打印出蛇和食物的位置。
  8. 获取用户输入:接收用户的方向键输入。
  9. 确定蛇的方向:根据用户的输入改变蛇的移动方向。
  10. 移动蛇:根据方向移动蛇的位置。
  11. 蛇身体增长:当蛇吃到食物时,身体增长。
  12. 食物随机重新生成:当蛇身体增长后,食物在新的位置生成。
  13. 检查游戏是否结束:检测蛇是否碰到边界或自己,如果是,则游戏结束。
  14. 稍作延迟:控制游戏更新的速度。
  • 11
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值