iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >如何用Pygame制作简单的贪吃蛇游戏
  • 381
分享到

如何用Pygame制作简单的贪吃蛇游戏

2023-07-02 09:07:41 381人浏览 八月长安
摘要

这篇文章主要讲解了“如何用Pygame制作简单的贪吃蛇游戏”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何用Pygame制作简单的贪吃蛇游戏”吧!安装与导入使用pip install py

这篇文章主要讲解了“如何用Pygame制作简单的贪吃蛇游戏”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何用Pygame制作简单的贪吃蛇游戏”吧!

安装与导入

使用pip install pygame进入安装,安装成功后导入所需模块:

import pygame,sys,randomfrom pygame.locals import *

其中sys为要在后续中使用它的退出程序机制所以在这里需要导入。

定义后续需要的参数

#初始化pygame库pygame.init()

在用pygame时,初始化库是必须的,对应后面的退出代码,这两个是一对的。

#初始化一个游戏界面DISPLAY=pygame.display.set_mode((800,800))#设置游戏窗口标题pygame.display.set_caption('贪吃蛇')

在写完以上代码后,点击运行是会有一闪而过的界面,这是正常的,因为没有任何东西在运行。

#定义一个变量控制游戏速度FPSCLOCK=pygame.time.Clock()#定义颜色BLACK=pygame.Color(0,0,0)WHITE=pygame.Color(255,255,255)RED=pygame.Color(255,0,0)# 定义蛇头初始位置snake_Head=[100,100]# 定义一个蛇初始长度,因为界面都是20*20所以长度都是减20snake_Body=[[80,100], [60,100]]# # 蛇初始方向direction="right"# 定义改变方向的变量,按键changeDirection = direction#定义初始食物位置food_Postion = [300,300]# 定义食物状态,0表示被吃,1表示没有被吃food_Total = 1

以上都是在定义后续会用到的参数。

绘制蛇与食物

#绘制贪吃蛇def drawSnake(snake_Body):    for i in snake_Body:        pygame.draw.rect(DISPLAY,WHITE,Rect(i[0],i[1],20,20))#绘制食物位置def drawFood(food_Postion):    pygame.draw.rect(DISPLAY,RED,Rect(food_Postion[0],food_Postion[1],20,20))

上面的pygame.draw.rect(DISPLAY,RED,Rect(food_Postion[0],food_Postion[1],20,20)) draw是pygame的绘制模块,rect中DISPLAY是在我们设置的游戏界面上绘制颜色、所绘制矩形的区域、矩形的宽度和高度。

游戏规则与运行

def gameover():    #退出pygame    pygame.quit()    #退出程序    sys.exit()

这里设置的退出与上文中的pygame.init() 对应。

game_flag=Truewhile game_flag:    #渲染底色    DISPLAY.fill(BLACK)    #画出贪吃蛇    drawSnake(snake_Body)    #画出食物位置    drawFood(food_Postion)

这里将背景设置成了黑色,与定义颜色中的设置对应,将蛇与食物的位置也与上文中对应 。

    #增加游戏速度    game_speed=1+len(snake_Body)//3    #刷新显示层,贪吃蛇与食物每次移动,都会刷新显示层    pygame.display.flip()    FPSCLOCK.tick(game_speed)    for event in pygame.event.get():        if event.type==QUIT:            pygame.quit()            sys.exit()

这里规定了游戏的速度,与后续吃到食物后的移速增加。

        elif event.type == KEYDOWN:            # 如果是右箭头或者是d,蛇向右移动            if event.key == K_RIGHT or event.key == K_d:                changeDirection = 'right'            # 如果是做箭头或者是a,蛇向左移动            if event.key == K_LEFT or event.key == K_a:                changeDirection = 'left'            if event.key == K_UP or event.key == K_w:                changeDirection = 'up'            if event.key == K_DOWN or event.key == K_s:                changeDirection = 'down'            # 点击esc,退出            if event.key == KSCAN_ESCAPE:                pygame.event.post(pygame.event.Event(QUIT))    # 确认方向,判断是否输入了反方向    if changeDirection == 'right' and not direction == 'left':        direction = changeDirection    if changeDirection == 'left' and not direction == 'right':        direction = changeDirection    if changeDirection == 'up' and not direction == 'down':        direction = changeDirection    if changeDirection == 'down' and not direction == 'up':        direction = changeDirection    #根据方向移动蛇头    if direction=='right':        snake_Head[0]+=20    if direction=='left':        snake_Head[0]-=20    if direction=='up':        snake_Head[1]-=20    if direction=='down':        snake_Head[1]+=20

注意这里引号里面的单词要与蛇初始方向的单词一致,不然在运行时会出问题 if changeDirection == 'right' and not direction == 'left': 意思是可以使用“→”或者“D”进行右的移动,下面也是 if changeDirection == 'right' and not direction == 'left':意思是如果在右行走的时候按“A”或者“←”是没有效果的,下面也是 if direction=='right':snake_Head[0]+=20 意思是点击“→”或者“D”向右移动一格,因为格子是20*20的所以一格是20

     #增加蛇的长度    snake_Body.insert(0,list(snake_Head))     #判断是否吃到食物    if snake_Head[0] == food_Postion[0] and snake_Head[1] == food_Postion[1]:        food_Total = 0    else:        snake_Body.pop()

snake_Body.pop()意思是如果没有吃到就不再新增加食物,如果没有这句代码,会导致蛇没有吃到食物也在增加长度。

    if food_Total == 0:        x = random.randrange(1, 32)        y = random.randrange(1, 24)        food_Postion = [int(x * 20), int(y * 20)]        food_Total = 1

这里的意思为如果食物被吃了,状态为0的话,就随机地点生成一个。

    if snake_Head[0] > 800 or snake_Head[0] < 0:        gameover()    elif snake_Head[0] > 800 or snake_Head[0] < 0:        gameover()        # 如果碰到自己    for body in snake_Body[1:]:        if snake_Head[0] == body[0] and snake_Head[1] == body[1]:            gameover()

if snake_Head[0] > 800 or snake_Head[0] < 0:意思为碰到边界游戏退出,800是全面设置的界面大小

完整代码

import pygame,sys,randomfrom pygame.locals import *#初始化pygame库pygame.init()#初始化一个游戏界面DISPLAY=pygame.display.set_mode((800,800))#设置游戏窗口标题pygame.display.set_caption('贪吃蛇')#定义一个变量控制游戏速度FPSCLOCK=pygame.time.Clock()#定义颜色BLACK=pygame.Color(0,0,0)WHITE=pygame.Color(255,255,255)RED=pygame.Color(255,0,0)# 定义蛇头初始位置snake_Head=[100,100]# 定义一个蛇初始长度,因为界面都是20*20所以长度都是减20snake_Body=[[80,100], [60,100],[40,100]]# # 蛇初始方向direction="right"# 定义改变方向的变量,按键changeDirection = direction#定义初始食物位置food_Postion = [300,300]# 定义食物状态,0表示被吃,1表示没有被吃food_Total = 1#绘制贪吃蛇def drawSnake(snake_Body):    for i in snake_Body:        pygame.draw.rect(DISPLAY,WHITE,Rect(i[0],i[1],20,20))#绘制食物位置def drawFood(food_Postion):    pygame.draw.rect(DISPLAY,RED,Rect(food_Postion[0],food_Postion[1],20,20))def gameover():    #退出pygame    pygame.quit()    #退出程序    sys.exit()game_flag=Truewhile game_flag:    #渲染底色    DISPLAY.fill(BLACK)    #画出贪吃蛇    drawSnake(snake_Body)    #画出食物位置    drawFood(food_Postion)    #增加游戏速度    game_speed=1+len(snake_Body)//3    #刷新显示层,贪吃蛇与食物每次移动,都会刷新显示层    pygame.display.flip()    FPSCLOCK.tick(game_speed)    for event in pygame.event.get():        if event.type==QUIT:            pygame.quit()            sys.exit()        elif event.type == KEYDOWN:            # 如果是右箭头或者是d,蛇向右移动            if event.key == K_RIGHT or event.key == K_d:                changeDirection = 'right'            # 如果是做箭头或者是a,蛇向左移动            if event.key == K_LEFT or event.key == K_a:                changeDirection = 'left'            if event.key == K_UP or event.key == K_w:                changeDirection = 'up'            if event.key == K_DOWN or event.key == K_s:                changeDirection = 'down'            # 点击esc,退出            if event.key == KSCAN_ESCAPE:                pygame.event.post(pygame.event.Event(QUIT))    # 确认方向,判断是否输入了反方向    if changeDirection == 'right' and not direction == 'left':        direction = changeDirection    if changeDirection == 'left' and not direction == 'right':        direction = changeDirection    if changeDirection == 'up' and not direction == 'down':        direction = changeDirection    if changeDirection == 'down' and not direction == 'up':        direction = changeDirection    #根据方向移动蛇头    if direction=='right':        snake_Head[0]+=20    if direction=='left':        snake_Head[0]-=20    if direction=='up':        snake_Head[1]-=20    if direction=='down':        snake_Head[1]+=20     #增加蛇的长度    snake_Body.insert(0,list(snake_Head))    #判断是否吃到食物    if snake_Head[0] == food_Postion[0] and snake_Head[1] == food_Postion[1]:        food_Total = 0    else:        snake_Body.pop()    if food_Total == 0:        x = random.randrange(1, 32)        y = random.randrange(1, 24)        food_Postion = [int(x * 20), int(y * 20)]        food_Total = 1    if snake_Head[0] > 800 or snake_Head[0] < 0:        gameover()    elif snake_Head[0] > 800 or snake_Head[0] < 0:        gameover()        # 如果碰到自己    for body in snake_Body[1:]:        if snake_Head[0] == body[0] and snake_Head[1] == body[1]:            gameover()

感谢各位的阅读,以上就是“如何用Pygame制作简单的贪吃蛇游戏”的内容了,经过本文的学习后,相信大家对如何用Pygame制作简单的贪吃蛇游戏这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: 如何用Pygame制作简单的贪吃蛇游戏

本文链接: https://www.lsjlt.com/news/340688.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何用Pygame制作简单的贪吃蛇游戏
    这篇文章主要讲解了“如何用Pygame制作简单的贪吃蛇游戏”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何用Pygame制作简单的贪吃蛇游戏”吧!安装与导入使用pip install py...
    99+
    2023-07-02
  • 教你用Pygame制作简单的贪吃蛇游戏
    目录1.序言2.安装与导入3.定义后续需要的参数4.绘制蛇与食物5.游戏规则与运行6.成品展示7.完整代码总结1.序言 目前基本上软测会用到的工具或者第三方库都已经被写完,本着不要逮...
    99+
    2024-04-02
  • 基于Pygame如何实现简单的贪吃蛇游戏
    这篇文章主要为大家展示了“基于Pygame如何实现简单的贪吃蛇游戏”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“基于Pygame如何实现简单的贪吃蛇游戏”这篇文章吧。导入相关的包import&n...
    99+
    2023-06-21
  • 基于Pygame实现简单的贪吃蛇游戏
    目录导入相关的包设置屏幕大小以及基本参数设置贪吃蛇的位置,以及移动的大小绘制蛇让蛇动起来实现贪吃蛇拐弯实现随机食物吃食物完整代码 导入相关的包 import pygame, sy...
    99+
    2024-04-02
  • 使用pygame制作一个贪吃蛇的小游戏
    之前我们已经学习了如果使用pygame创建一个窗口,现在我们来学习使用pygame来制作一个经典的小游戏—贪吃蛇。首先我们需要导入待使用的模块:import pygame, sys, randomfrom pygame.locals imp...
    99+
    2023-06-02
  • Pygame代码 制作一个贪吃蛇小游戏
    目录用到的 Pygame 函数创建屏幕创建 snake使 snake 动起来处理 Game Over增加食物snake 的成长展示得分 用到的 Pygame 函数 贪吃蛇小游戏用到的...
    99+
    2024-04-02
  • 如何利用pygame实现贪吃蛇游戏
    这篇文章主要介绍如何利用pygame实现贪吃蛇游戏,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!创建蛇首先,先分析一下蛇的移动,不然我们一定会吃亏的(别问,问就是自己写了一堆无效代码)。蛇的移动其实并没有想象中那样复...
    99+
    2023-06-15
  • Java实现简单的贪吃蛇游戏
    本文实例为大家分享了Java实现简单贪吃蛇游戏的具体代码,供大家参考,具体内容如下 代码 启动类 package snake; import javax.swing.*; /...
    99+
    2024-04-02
  • python实现简单的贪吃蛇游戏
    本文实例为大家分享了python实现贪吃蛇游戏的具体代码,加入按钮、难度、音乐、得分功能,供大家参考,具体内容如下 贪吃蛇小游戏,可以显示出得分,又背景音乐,难度选择和开始重启按钮设...
    99+
    2024-04-02
  • unity实现简单的贪吃蛇游戏
    本文实例为大家分享了unity实现简单贪吃蛇游戏的具体代码,供大家参考,具体内容如下 SatUIController代码 using UnityEngine; using Un...
    99+
    2024-04-02
  • python如何实现简单贪吃蛇小游戏
    本篇内容介绍了“python如何实现简单贪吃蛇小游戏”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1. 导入游戏库import p...
    99+
    2023-07-02
  • Java实现简单版贪吃蛇游戏
    本文实例为大家分享了Java实现简单版贪吃蛇游戏的具体代码,供大家参考,具体内容如下 这是一个比较简洁的小游戏,主要有三个类,一个主类,一个食物类,一个贪吃蛇类。 1、首先定义主类...
    99+
    2024-04-02
  • python实现简单贪吃蛇小游戏
    本文实例为大家分享了python实现简单贪吃蛇的具体代码,供大家参考,具体内容如下 1. 导入游戏库 import pgzrun import random 2.游戏初始化 # 窗口...
    99+
    2024-04-02
  • java如何实现简单贪吃蛇小游戏
    这篇文章给大家分享的是有关java如何实现简单贪吃蛇小游戏的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。具体内容如下有两个类,放在同一文件下下即可,背景图片,标题,蛇尾可自行更改import java....
    99+
    2023-06-15
  • java实现简单贪吃蛇小游戏
    本文实例为大家分享了java实现贪吃蛇小游戏,供大家参考,具体内容如下 有两个类,放在同一文件下下即可,背景图片,标题,蛇尾可自行更改 import java.awt.*; im...
    99+
    2024-04-02
  • Python怎样制作贪吃蛇游戏
    这篇文章给大家介绍Python怎样制作贪吃蛇游戏,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。前言:文章利用Python pygame做一个贪吃蛇的小游戏而且讲清楚每一段代码是用来干嘛的。据说是贪吃蛇游戏是1976年,...
    99+
    2023-06-22
  • c++如何实现超简单的贪吃蛇游戏
    小编给大家分享一下c++如何实现超简单的贪吃蛇游戏,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!设计思路        建议先将代码复制下来跑一遍再来看思路!!! ...
    99+
    2023-06-22
  • Java实现简单的贪吃蛇小游戏
    本文实例为大家分享了Java实现简单的贪吃蛇小游戏的具体代码,供大家参考,具体内容如下 1. 程序结构 程序结构图如图: 2. 程序设计思路 2.1 Data类 作用:连接stat...
    99+
    2024-04-02
  • C++实现简单贪吃蛇小游戏
    本文实例为大家分享了C++实现简单贪吃蛇小游戏的具体代码,供大家参考,具体内容如下 1 贪吃蛇游戏原理 1.1 构造蛇身:定义一个坐标数组,存放的是蛇的每一节蛇身所在的坐标位置。 1...
    99+
    2024-04-02
  • 用js编写简单的贪吃蛇小游戏
    本文实例为大家分享了js编写简单的贪吃蛇小游戏的具体代码,供大家参考,具体内容如下 代码如下: HTML 5 部分 <!DOCTYPE html> <html ...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作