python介绍
Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构。
Python 是由 Guido van Rossum 在八十年代末和九十年代初,在荷兰国家数学和计算机科学研究所设计出来的。
Python 本身也是由诸多其他语言发展而来的,这包括 ABC、Modula-3、C、C++、Algol-68、SmallTalk、Unix shell 和其他的脚本语言等等。
像 Perl 语言一样,Python 源代码同样遵循 GPL(GNU General Public License)协议。
现在 Python 是由一个核心开发团队在维护,Guido van Rossum 仍然占据着至关重要的作用,指导其进展。
Python 2.7 被确定为最后一个 Python 2.x 版本,它除了支持 Python 2.x 语法外,还支持部分 Python 3.1 语法。
下面开始用python进行游戏开发
- 用python制作游戏,要用到pygame库,下载方法为打开终端输入 pip install pygame 回车即可进行下载
-
新建项目首先引用pygame库
import pygame
- 在引入随机函数库
import random
- 引入sys库用于访问与Python解释器相关的变量和函数,例如退出程序
import sys
-
初始化pygame模块,准备使用pygame的功能。 pygame.init()
-
设置游戏窗口大小
screen_width = 640 #设置屏幕的宽度和高度。 screen_height = 480 screen = pygame.display.set_mode((screen_width, screen_height)) #创建游戏窗口。
-
设置游戏颜色 BLACK = (0, 0, 0) WHITE = (255, 255, 255) GREEN = (0, 255, 0) RED = (213, 50, 80) #定义几种颜色,用于绘制蛇、食物和背景。
-
设置蛇的初始位置和食物的位置
snake_position = [100, 50] snake_body = [[100, 50], [90, 50], [80, 50]] food_position = [random.randrange(1, (screen_width//10)) * 10, random.randrange(1, (screen_height//10)) * 10] food_spawn = [True, True] # 用于跟踪食物是否需要重新生成
-
主游戏部分用一个死循环来保持窗口
下面是完整的代码以及解释
import pygame #用于创建游戏窗口、处理图形和事件。 import sys #用于访问与Python解释器相关的变量和函数,例如退出程序。 import random #用于生成随机数,用于放置食物。 # 初始化pygame pygame.init() #初始化pygame模块,准备使用pygame的功能。 # 设置屏幕大小 screen_width = 640 #设置屏幕的宽度和高度。 screen_height = 480 screen = pygame.display.set_mode((screen_width, screen_height)) #创建游戏窗口。 # 设置颜色 BLACK = (0, 0, 0) WHITE = (255, 255, 255) GREEN = (0, 255, 0) RED = (213, 50, 80) #定义几种颜色,用于绘制蛇、食物和背景。 # 设置蛇的初始位置和食物的位置 snake_position = [100, 50] snake_body = [[100, 50], [90, 50], [80, 50]] food_position = [random.randrange(1, (screen_width//10)) * 10, random.randrange(1, (screen_height//10)) * 10] food_spawn = [True, True] # 用于跟踪食物是否需要重新生成 ''' 设置蛇的初始位置和身体部分的位置。 随机生成食物的位置。 food_spawn用于标记食物是否需要重新生成。 ''' # 设置蛇的初始方向 direction = 'RIGHT' change_to = direction ''' 初始化蛇的移动方向为向右。 change_to用于存储玩家输入的新方向。 ''' # 设置速度 speed = 15 clock = pygame.time.Clock() ''' 设置游戏的速度。 创建一个时钟对象来控制游戏的帧率。 ''' # 主游戏循环 while True: # 检查按键事件 ''' 主循环是游戏的核心,不断运行直到玩家退出。 事件处理:监听玩家的按键操作。 移动逻辑:根据玩家的按键更新蛇的位置。 食物生成逻辑:当蛇吃掉食物后,生成新的食物。 碰撞检测:检查蛇是否碰到边界或自己。 绘制逻辑:在屏幕上绘制蛇的身体和食物。 刷新屏幕:更新屏幕上的显示。 控制游戏速度:通过clock.tick(speed)控制游戏的帧率。 ''' for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit() if event.type == pygame.KEYDOWN: ''' 监听事件队列中的事件。 如果是退出事件,则退出游戏。 如果是按键按下事件,则根据按键更改蛇的移动方向。 ''' if event.key == pygame.K_UP and direction != 'DOWN': change_to = 'UP' if event.key == pygame.K_DOWN and direction != 'UP': change_to = 'DOWN' if event.key == pygame.K_LEFT and direction != 'RIGHT': change_to = 'LEFT' if event.key == pygame.K_RIGHT and direction != 'LEFT': change_to = 'RIGHT' if event.key == pygame.K_q: pygame.event.post(pygame.event.Event(pygame.QUIT)) # 确定蛇的方向 direction = change_to # 根据方向移动蛇头 if direction == 'UP': snake_position[1] -= 10 if direction == 'DOWN': snake_position[1] += 10 if direction == 'LEFT': snake_position[0] -= 10 if direction == 'RIGHT': snake_position[0] += 10 # 蛇身体增长机制 snake_body.insert(0, list(snake_position)) if snake_position == food_position and food_spawn[0]: food_spawn[0] = False else: snake_body.pop() # 食物随机生成 if not food_spawn[0]: while True: new_food_position = [random.randrange(1, (screen_width//10)) * 10, random.randrange(1, (screen_height//10)) * 10] if new_food_position not in snake_body and new_food_position != food_position: food_position = new_food_position break food_spawn[0] = True # 检查蛇是否碰到边界 if snake_position[0] < 0: snake_position[0] = screen_width - 10 if snake_position[0] > screen_width - 10: snake_position[0] = 0 if snake_position[1] < 0: snake_position[1] = screen_height - 10 if snake_position[1] > screen_height - 10: snake_position[1] = 0 # 检查蛇是否碰到自己 if snake_position in snake_body[1:]: snake_body = [snake_position] # 保留蛇头 direction = 'STOP' # 停止蛇的移动 # 背景 screen.fill(BLACK) # 画蛇身体 for pos in snake_body: pygame.draw.rect(screen, GREEN, pygame.Rect(pos[0], pos[1], 10, 10)) # 画食物 pygame.draw.rect(screen, WHITE, pygame.Rect(food_position[0], food_position[1], 10, 10)) # 刷新屏幕 pygame.display.update() # 控制游戏速度 clock.tick(speed)
上面的代码对贪吃蛇的游戏进行了初步的开发,实现了当蛇即使碰到了编边界也不会死亡,但当蛇头碰到身体时会回归到1的长度
标签:10,python,screen,food,贪吃蛇,pygame,position,制作,snake From: https://blog.csdn.net/2201_75824633/article/details/139416686