如何用Python写贪吃蛇的小游戏

介绍了Python贪吃蛇游戏的编写代码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

代码如下:

# Write By Guobao
# 2017/4//7
#
# 贪吃蛇
# 用#做边界,*做食物,o做身体和头部
# python 3.6.1
 
import copy
import random
import os
import msvcrt
 
# the board class, used to put everything
class board:
 
 __points =[]
 
 def __init__(self):
 self.__points.clear()
 for i in range(22):
 line = []
 if i == 0 or i == 21:
 for j in range(22):
  line.append('#')
 else:
 line.append('#')
 for j in range(20):
  line.append(' ')
 line.append('#')
 self.__points.append(line)
 
 def getPoint(self, location):
 return self.__points[location[0]][location[1]]
 
 def clear(self):
 self.__points.clear()
 for i in range(22):
 line = []
 if i == 0 or i == 21:
 for j in range(22):
  line.append('#')
 else:
 line.append('#')
 for j in range(20):
  line.append(' '</
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,以下是用 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() ``` 希望对你有帮助!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值