python实战之利用pygame实现贪吃蛇游戏(一)

一、前言

之前尝试了自己用pygame写井字棋,这次玩的是贪吃蛇系列。
个人感觉模块可能会比较大,所以选择将函数和主要逻辑代码分在了两个文件中。

fuc为函数模块,存储了事件感应和刷新界面等部分。
main模块则是游戏的核心。

二、搭建界面

这里我就不重复了,可以先看一下这篇博客
其中界面的基本要素都有。

main.py

import pygame
from fuc import *
# 基本属性
lattice_wh = 20 #长宽
snake_color = (84, 255, 159)
food_color = (255, 64, 64)

# 绘制界面
pygame.init()
screen = pygame.display.set_mode((25*lattice_wh,25*lattice_wh))
pygame.display.set_caption('贪吃蛇')

# 游戏状态
game_stats = 1

while game_stats:
    update(screen,lattice_wh)
    check_events()

这次,我准备绘制一个25*25个格子的界面,每一个格子的长宽都为20。
这次的绘制方式和之前不一样,我准备使用的是pygame.draw.line()函数,来绘制一条条的直线。
传入参数:
界面(screen)
rbg颜色(我这里是(105, 105, 105),是淡灰色,吧)
起始点坐标、结束点坐标(坐标系在上面博客都有)

代码部分:(放在update函数中,因为每一次刷新都需要重新绘制网格)

def update(screen,lattice_wh):
    """屏幕刷新"""
    # 背景颜色
    screen.fill((255,255,255))
    # 绘制网格
    for i in range(25):
        pygame.draw.line(screen,(105, 105, 105),(0,lattice_wh*i),(500,lattice_wh*i))
    for i in range(25):
        pygame.draw.line(screen,(105, 105, 105),(lattice_wh*i,0),(lattice_wh*i,500))
    pygame.display.flip()

fuc模块:

import pygame
import sys
"""存储了相关的函数"""
def update(screen,lattice_wh):
    """屏幕刷新"""
    # 背景颜色
    screen.fill((255,255,255))
    # 绘制网格
    for i in range(25):
        pygame.draw.line(screen,(105, 105, 105),(0,lattice_wh*i),(500,lattice_wh*i))
    for i in range(25):
        pygame.draw.line(screen,(105, 105, 105),(lattice_wh*i,0),(lattice_wh*i,500))
    pygame.display.flip()

def check_events():
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            sys.exit()

三、运行结果

四、结语

目前我们已经结束了界面搭建,接下来的部分我将实现逻辑。

请看

到此这篇关于python实战之利用pygame实现贪吃蛇游戏的文章就介绍到这了,更多相关pygame实现贪吃蛇游戏内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python飞机大战pygame游戏框架搭建操作详解

    本文实例讲述了python飞机大战pygame游戏框架搭建操作.分享给大家供大家参考,具体如下: 目标 明确主程序职责 实现主程序类 准备游戏精灵组 01. 明确主程序职责 回顾 快速入门案例,一个游戏主程序的 职责 可以分为两个部分: 游戏初始化 游戏循环 根据明确的职责,设计 PlaneGame 类如下: 提示 根据 职责 封装私有方法,可以避免某一个方法的代码写得太过冗长 如果某一个方法编写的太长,既不好阅读,也不好维护! 游戏初始化 -- init() 会调用以下方法: 游戏循环 --

  • python飞机大战pygame游戏背景设计详解

    本文实例讲述了python飞机大战pygame游戏背景设计.分享给大家供大家参考,具体如下: 目标 背景交替滚动的思路确定 显示游戏背景 01. 背景交替滚动的思路确定 运行 备课代码,观察 背景图像的显示效果: 游戏启动后,背景图像 会 连续不断地 向下方 移动 在 视觉上 产生英雄的飞机不断向上方飞行的 错觉 -- 在很多跑酷类游戏中常用的套路 游戏的背景 不断变化 游戏的主角 位置保持不变 1.1 实现思路分析 解决办法 创建两张背景图像精灵 第 1 张 完全和屏幕重合 第 2 张在 屏幕

  • python飞机大战pygame游戏之敌机出场实现方法详解

    本文实例讲述了python飞机大战pygame游戏之敌机出场实现方法.分享给大家供大家参考,具体如下: 目标 使用 定时器 添加敌机 设计 Enemy 类 01. 使用定时器添加敌机 运行 备课代码,观察 敌机的 出现规律: 游戏启动后,每隔 1 秒 会 出现一架敌机 每架敌机 向屏幕下方飞行,飞行 速度各不相同 每架敌机出现的 水平位置 也不尽相同 当敌机 从屏幕下方飞出,不会再飞回到屏幕中 1.1 定时器 在 pygame 中可以使用 pygame.time.set_timer() 来添加

  • pygame游戏之旅 按钮上添加文字的方法

    本文为大家分享了pygame游戏之旅的第11篇,供大家参考,具体内容如下 定义一个button函数,将文字,颜色等作为参数. def button (msg, x, y, w, h, ic, ac): mouse =pygame.mouse.get_pos() if x + w > mouse[0] > x and y + h > mouse[1] > y: pygame.draw.rect(gameDisplay, ac, (x,y,w,h)) else: pygame.draw

  • pygame游戏之旅 添加键盘按键的方法

    本文为大家分享了pygame游戏之旅的第4篇,供大家参考,具体内容如下 按键类型用event.type表示,按键用event.key表示 KEYDOWN和KEYUP的参数描述如下: key – 按下或者放开的键值,是一个数字,估计地球上很少有人可以记住,所以Pygame中可以使用K_xxx来表示,比如字母a就是K_a,还有K_SPACE和K_RETURN等. mod – 包含了组合键信息,如果mod & KMOD_CTRL是真的话,表示用户同时按下了Ctrl键.类似的还有KMOD_SHIFT,K

  • pygame游戏之旅 添加游戏介绍

    本文为大家分享了pygame游戏之旅的第9篇,供大家参考,具体内容如下 在游戏开始之前定义一个函数,用来显示游戏介绍: def game_intro(): intro = True while intro: for event in pygame.event.get(): print(event) if event.type == pygame.QUIT: pygame.quit() quit() gameDisplay.fill(white) largeText = pygame.font.F

  • pygame实现贪吃蛇游戏(上)

    本文实例为大家分享了pygame贪吃蛇游戏的具体代码,供大家参考,具体内容如下 1.准备工作 我们已经初始化了一个400*400的界面,为方便看我们的游戏,我们先在界面上画40*40的格子,即纵向切10份,横向切10份,这样我们就需要画20个线段,下面是20个线段的画法 for x in range(0,400,40): pygame.draw.line(screen,(255,255,255),(x,0),(x,400),1) for y in range(0,400,40): pygame.

  • 使用Python第三方库pygame写个贪吃蛇小游戏

    今天看到几个关于pygame模块的博客和视频,感觉非常有趣,这里照猫画虎写了一个贪吃蛇小游戏,目前还有待完善,但是基本游戏功能已经实现,下面是代码: # 导入模块 import pygame import random # 初始化 pygame.init() w = 720 #窗口宽度 h = 600 #窗口高度 ROW = 30 #行数 COL = 36 #列数 #将所有的坐标看作是一个个点,定义点类 class Point: row = 0 col = 0 def __init__(self

  • pygame游戏之旅 游戏中添加显示文字

    本文为大家分享了pygame游戏之旅的第5篇,供大家参考,具体内容如下 在游戏中添加显示文字: 这里自己定义一个crash函数接口: def crash(): message_diaplay('You Crashed') 然后实现接口函数message_display(text) def message_diaplay(text): largeText = pygame.font.Font('freesansbold.ttf',115) TextSurf, TextRect = text_obj

  • python飞机大战 pygame游戏创建快速入门详解

    本文实例讲述了python飞机大战 pygame游戏创建.分享给大家供大家参考,具体如下: 目标 项目准备 使用 pygame 创建图形窗口 理解 图像 并实现图像绘制 理解 游戏循环 和 游戏时钟 理解 精灵 和 精灵组 项目准备 新建 飞机大战 项目 新建一个 hm_01_pygame入门.py 导入 游戏素材图片 游戏的第一印象 把一些 静止的图像 绘制到 游戏窗口 中 根据 用户的交互 或其他情况,移动 这些图像,产生动画效果 根据 图像之间 是否发生重叠,判断 敌机是否被摧毁 等其他情

  • python 使用pygame工具包实现贪吃蛇游戏(多彩版)

    今天我们用python和python的工具包pygame来编写一个贪吃蛇的小游戏 贪吃蛇游戏功能介绍 贪吃蛇的游戏规则如下: 通过上下左右键或者WASD键来移动蛇来,让它吃到食物,每吃到食物,蛇的长度变长,并获得分数.若蛇碰到游戏边际 或者自身,则蛇死亡,游戏结束. 游戏设计思路 根据游戏规则,我们需要: 1.初始化游戏环境. 2.初始化蛇.食物 3.监听键盘动作 4.蛇的运动,吃食物,是否死亡 5.该局游戏结束,是否还有再玩. 其中的难点在于如何在屏幕上展示蛇的运动,其实我们肉眼所见的蛇的运动

  • pygame实现贪吃蛇游戏(下)

    接着上篇pygame实现贪吃蛇游戏(上)继续介绍 1.豆子的吃掉效果 只需在代码最后移动蛇头的代码后增加一个蛇头和豆子坐标的判断即可 if snake_x == bean_x and snake_y == bean_y: bean_x,bean_y = get_bean_pos() 体验一下,现在蛇头碰到豆子后,豆子已经会消失了 2.蛇身的加长 前面我们给蛇身只设置了一个坐标,既然蛇身会越加越长,当然我们用一个数组去存这个身体是更合适的,于是我们把蛇身的变量做一些修改. 在初始化body_x和b

  • pygame游戏之旅 添加icon和bgm音效的方法

    本文为大家分享了pygame游戏之旅的第14篇,供大家参考,具体内容如下 添加icon需要用的函数是: gameIcon = pygame.image.load("carIcon.png") pygame.display.set_icon(gameIcon) 添加bgm和音效的函数是: crash_sound = pygame.mixer.Sound("crashed.wav") pygame.mixer.music.load("bgm.wav"

随机推荐