Python Pygame实现落球游戏详解

目录
  • 引包
  • 初始化配置
  • 捕捉事件
  • 填充屏幕让球下落
  • 完整代码

引包

引入对应的包,和原来一样写一个打印文字的方法

import sys, random,  pygame
from pygame.locals import *

def print_text(font, x, y, text, color=(255, 255, 255)):
    img_text = font.render(text, True, color)
    screen.blit(img_text, (x, y))

初始化配置

初始化游戏,pygame窗口的一些信息,以及游戏中用的的一些参数。

pygame.init()
# 定时器
mainClock = pygame.time.Clock()

# 设置屏幕和窗口标题
screen = pygame.display.set_mode((600, 500))
pygame.display.set_caption("落球游戏")
# 设置字体
font1 = pygame.font.SysFont("方正粗黑宋简体", 24)
pygame.mouse.set_visible(False)
# 设置颜色变量
white = 255, 255, 255
red = 220, 50, 50
yellow = 230, 230, 50
black = 0, 0, 0

# 生命数
lives = 3
# 分
score = 0
# 游戏开始flg
game_over = True
# 鼠标位置
mouse_x = mouse_y = 0
pos_x = 300
pos_y = 460
# 球落下的x和y轴坐标
bomb_x = random.randint(0, 500)
bomb_y = -50
# 球下落的速度
vel_y = 0.7

捕捉事件

捕捉事件,如果游戏结束按下鼠标,则游戏重新开始, mouse_x, mouse_y捕捉鼠标位置, move_x, move_y获取鼠标的偏移

while True:
    for event in pygame.event.get():
        if event.type == QUIT:
            sys.exit()
        elif event.type == MOUSEMOTION:
            mouse_x, mouse_y = event.pos
            move_x, move_y = event.rel
        elif event.type == MOUSEBUTTONUP:
            if game_over:
                game_over = False
                lives = 3
                score = 0
    keys = pygame.key.get_pressed()
    if keys[K_ESCAPE]:
        sys.exit()

填充屏幕让球下落

让屏幕填充一个暖色调,如果游戏未开始,屏幕中显示 “点击开始新游戏”, 否则球下落。

如果球大于500,则重置一个新球,生命减去一,如果生命没有了则游戏结束。

这里没有使用元素相碰撞原理,有两个相对的位置,如果球大于挡板的垂直坐标,切球的x坐标大于挡板的开始位置,小于挡板的宽度,则分数添加,重置球的位置。

    screen.fill((255, 166, 77))

    if game_over:
        print_text(font1, 100, 200, "点击新游戏")
    else:
        bomb_y += vel_y
    if bomb_y > 500:
        bomb_x = random.randint(0, 500)
        bomb_y = -50
        lives -= 1
    if lives == 0:
        game_over = True

    elif bomb_y > pos_y:
        if bomb_x > pos_x and bomb_x < pos_x + 120:
            score += 120
            bomb_x = random.randint(0, 500)
            bomb_y = -50

绘制球和挡板,绘制屏幕

根据bomb_x,bomb_y来显示球,并绘制一个阴影

矩形一样

显示生命数和分数,更新屏幕,设置每秒的频率为20

这里明显有很大的问题,因为圆绘制的时候点是圆心,所以比较的时候就会出错,如果你用矩形的右部分去接球心左少部分,显示还是接不到,这里我们不深究,简单的游戏是实现了,优化我放在第二部分。

pygame.draw.circle(screen, black, (bomb_x - 4, int(bomb_y) - 4), 30, 0)
    pygame.draw.circle(screen, yellow, (bomb_x, int(bomb_y)), 30, 0)
    pygame.draw.rect(screen, black, (pos_x - 4, pos_y - 4, 120, 40), 0)
    pygame.draw.rect(screen, red, (pos_x, pos_y, 120, 40), 0)

    print_text(font1, 0, 0, "生命数: " + str(lives))

    print_text(font1, 500, 0, "分数: " + str(score))

    pygame.display.update()
    mainClock.tick(20)

完整代码

import sys, random,  pygame
from pygame.locals import *

def print_text(font, x, y, text, color=(255, 255, 255)):
    img_text = font.render(text, True, color)
    screen.blit(img_text, (x, y))

pygame.init()
# 定时器
mainClock = pygame.time.Clock()

# 设置屏幕和窗口标题
screen = pygame.display.set_mode((600, 500))
pygame.display.set_caption("落球游戏")
# 设置字体
font1 = pygame.font.SysFont("方正粗黑宋简体", 24)
pygame.mouse.set_visible(False)
# 设置颜色变量
white = 255, 255, 255
red = 220, 50, 50
yellow = 230, 230, 50
black = 0, 0, 0

# 生命条数
lives = 3
# 分
score = 0
# 游戏开始flg
game_over = True
# 鼠标位置
mouse_x = mouse_y = 0
pos_x = 300
pos_y = 460
# 球落下的x和y轴坐标
bomb_x = random.randint(0, 500)
bomb_y = -50
# 球下落的速度
vel_y = 0.7

while True:
    for event in pygame.event.get():
        if event.type == QUIT:
            sys.exit()
        elif event.type == MOUSEMOTION:
            mouse_x, mouse_y = event.pos
            move_x, move_y = event.rel
        elif event.type == MOUSEBUTTONUP:
            if game_over:
                game_over = False
                lives = 3
                score = 0
    keys = pygame.key.get_pressed()
    if keys[K_ESCAPE]:
        sys.exit()

    screen.fill((255, 166, 77))

    if game_over:
        print_text(font1, 100, 200, "点击新游戏")
    else:
        bomb_y += vel_y

    if bomb_y > 500:
        bomb_x = random.randint(0, 500)
        bomb_y = -50
        lives -= 1
    if lives == 0:
        game_over = True

    elif bomb_y > pos_y:
        if bomb_x > pos_x and bomb_x < pos_x + 120:
            score += 120
            bomb_x = random.randint(0, 500)
            bomb_y = -50

    pygame.draw.circle(screen, black, (bomb_x - 4, int(bomb_y) - 4), 30, 0)
    pygame.draw.circle(screen, yellow, (bomb_x, int(bomb_y)), 30, 0)
    pos_x = mouse_x
    if pos_x < 0:
        pos_x = 0
    elif pos_x > 500:
        pos_x = 500

    pygame.draw.rect(screen, black, (pos_x - 4, pos_y - 4, 120, 40), 0)
    pygame.draw.rect(screen, red, (pos_x, pos_y, 120, 40), 0)

    print_text(font1, 0, 0, "生命数: " + str(lives))

    print_text(font1, 500, 0, "分数:  " + str(score))

    pygame.display.update()
    mainClock.tick(20)

到此这篇关于Python Pygame实现落球游戏详解的文章就介绍到这了,更多相关Python Pygame落球游戏内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python趣味挑战之用pygame实现飞机塔防游戏

    一.先让飞机在屏幕上飞起来吧. (一)实现飞机类 class Plane: def __init__(self,filename,screen): self.plane = pygame.image.load(filename).convert_alpha() self.height = self.plane.get_height() self.width = self.plane.get_width() self.radius = randint(2, 10) self.xpos = rand

  • 基于Python Pygame实现的画饼图游戏

    目录 导入包 配置基本参数 根据输入的数字改变扇形的个数 监听事件 这个游戏就是实现键盘上输入不同的数字,将圆分割成不同的几个部分,每部分用不同的颜色来实现. 导入包 导入随机包,pygame,系统包,time时间包用于时间暂停.math是用来确认弧度的. import random import pygame, sys, time import math from pygame.locals import * 配置基本参数 初始化pygame,设置窗口大小标题,设置圆心的x和y轴,圆的半径,线

  • Python Pygame实现兔子猎人守护城堡游戏

    目录 效果图 主要代码 游戏初始化 主函数 运行  效果图 守卫类游戏大家应该玩过吧,什么植物大战僵尸呀,保卫萝卜呀,今天我们自己用python来写一个自己的守护类小游戏兔子猎人守护城堡,让大家看看效果图. 主要代码 下面我来说一下是怎么得到的将代码分享一下给大家 首先得将要用到的库导入进来 import cfg import math import random import pygame from modules.Sprites import * from modules.interface

  • 基于python pygame实现的兔子吃月饼小游戏

    目录 小游戏规则简介 实现 初始化游戏窗口 游戏逻辑 实现玩家类 实现月饼类 交互逻辑 总结 中秋佳节就快来临,给各位大佬整个兔子吃月饼的小游戏助助兴,废话不多说,开整. 小游戏规则简介 玩家通过"wsad"或者"↑↓←→"键控制兔子移动,使得兔子可以吃到更多的月饼,月饼一旦生成之后位置不会变,也不会消失,就等着兔子去吃,就是这么简单.但是吃了月饼会变重,重到一定程度会有想不到的效果. 实现 使用Python的pygame模块开发,pygame是用来开发游戏软件的P

  • 使用python+pygame开发消消乐游戏附完整源码

    效果是这样的 ↓ ↓ ↓ 一.环境要求 windows系统,python3.6+ pip21+ 开发环境搭建地址 一起来学pygame吧 游戏开发30例(开篇词)--环境搭建+游戏效果展示 安装游戏依赖模块 pip install pygame 二.游戏简介 消消乐应该大家都玩过,或者看过.这个花里胡哨的小游戏 用python的pygame来实现,很简单. 今天带大家,用Python来实现一下这个花里胡哨的小游戏. 三.完整开发流程 1.项目主结构 首先,先整理一下项目的主结构,其实看一下主结构

  • python PyGame五子棋小游戏

    目录 前言 五子棋小游戏 1.简介 2.环境准备 3.初始化环境 4.棋盘 5.黑白棋子 6.对局信息 7.AI 8.完善 总结 前言 PyGame 是一个专门设计来进行游戏开发设计的 Python 模块,允许实时电子游戏研发而无需被低级语言(如机器语言和汇编语言)束缚,使用起来非常的简单,非常适合新手拿来玩耍,本教程源码均基于 Python 3.x 版本. 五子棋小游戏 1.简介 五子棋是我们小时候经常玩的两人对弈策略小游戏,规则简单: 1.对局双方各执一色棋子,常为黑白两色:2.空棋盘开局:

  • Python Pygame实战之打地鼠小游戏

    目录 前言 开发工具 环境搭建 原理简介 前言 今天给大家写一个个打地鼠小游戏,废话不多说直接开始- 开发工具 Python版本: 3.6.4 相关模块: pygame模块: 以及一些Python自带的模块. 环境搭建 安装Python并添加到环境变量,pip安装需要的相关模块即可. 原理简介 打地鼠的游戏规则相信大家都知道,这里就不多介绍了,反正就是不停地拿锤子打洞里钻出来的地鼠~ 首先,让我们确定一下游戏中有哪些元素.打地鼠打地鼠,地鼠当然得有啦,那我们就写个地鼠的游戏精灵类: '''地鼠'

  • Python Pygame实现落球游戏详解

    目录 引包 初始化配置 捕捉事件 填充屏幕让球下落 完整代码 引包 引入对应的包,和原来一样写一个打印文字的方法 import sys, random,  pygame from pygame.locals import * def print_text(font, x, y, text, color=(255, 255, 255)):     img_text = font.render(text, True, color)     screen.blit(img_text, (x, y))

  • Python+Pygame绘制小球的实例详解

    目录 1.准备工作 2.开始制作 1.创建一个小球 2.创建逐渐变大的小球 3.创建一个自由下落的小球 4.用if语句实现循环下落 5.做一个循环上下反弹的小球 1.准备工作 1.在文件里找到设置 2.在项目里找到python解释器,点击右边的加号 3.搜素pygame并安装 同理下载pgzero安装包 2.开始制作 1.创建一个小球 代码 import pgzrun def draw(): screen.fill('green') screen.draw.filled_circle((400,

  • Python Pygame中精灵和碰撞检测详解

    Pygame精灵和碰撞检测 今天来看看python最出名的游戏库pygame.学习两个名词:精灵和碰撞检测. 精灵英文字母是Sprite.Sprite是二维的图形,在游戏中可以用做各种物品,例如人物,道具,反正所有一切展现在游戏图像中的都可以用Sprite. 而碰撞检测就是检测两个Sprite之间是否有碰撞.例如游戏中的吃金币,吃豆豆,打敌人都可以用到碰撞检测. class Sprite(pygame.sprite.Sprite): def __init__(self, pos): pygame

  • Python 中的pygame安装与配置教程详解

    安装软件环境及版本说明 OS: Win10 x 64 专业版 Python: 2.7 IDE: PyCharm Community 2018 1. 安装python 1)下载并安装python python官网下载需要的版本,并安装(安装过程很简单,步骤略) https://www.python.org/downloads/windows/ 这里下载的是python2.7 2)配置环境变量 如果安装python时,没有勾选添加python到环境变量PATH,则需要手动添加 3)验证是否安装+配置

  • 利用Python还原方阵游戏详解

    目录 一.前言 二.游戏规则 三.numpy模块 四.第一步:大循环and获取规格 五.第二步:初始化棋盘 六.第三步:标注矩阵功能(难) 七.第四步:查看标注矩阵功能 八.第五步:胜利侦测 九.第六步:查看行列信息(难) 十.第七步:重新开始功能 十一.得分与完善and完整代码 一.前言 写这篇文章的灵感来源于我玩游戏的时候(为了避免过不了审就不说是啥游戏了),看见一个大佬在游戏里面建造了“还原方阵游戏”,就感觉很牛掰,就想着python不是有矩阵吗,可不可以还原一下呢? 说干就干,我写的那个

  • VTK与Python实现机械臂三维模型可视化详解

    三维可视化系统的建立依赖于三维图形平台, 如 OpenGL.VTK.OGRE.OSG等, 传统的方法多采用OpenGL进行底层编程,即对其特有的函数进行定量操作, 需要开发人员熟悉相关函数, 从而造成了开发难度大. 周期长等问题.VTK. ORGE.OSG等平台使用封装更好的函数简化了开发过程.下面将使用Python与VTK进行机器人上位机监控界面的快速原型开发. 完整的上位机程序需要有三维显示模块.机器人信息监测模块(位置/角度/速度/电量/温度/错误信息...).通信模块(串口/USB/WI

  • Python中捕获键盘的方式详解

    python中捕获键盘操作一共有两种方法 第一种方法: 使用pygame中event方法 使用方式如下:使用键盘右键为例 if event.type = pygame.KEYDOWN  and event.key =pygame.K_RIGHT:        print('向右移动') 第二种方法: 使用pygame中的key模块 1,使用pygame.key.get_pressed()返回一个包含键盘中所有按键的元组,元组用一个变量接收.如: keys_pressed = pygame.ke

  • python爬虫---requests库的用法详解

    requests是python实现的简单易用的HTTP库,使用起来比urllib简洁很多 因为是第三方库,所以使用前需要cmd安装 pip install requests 安装完成后import一下,正常则说明可以开始使用了. 基本用法: requests.get()用于请求目标网站,类型是一个HTTPresponse类型 import requests response = requests.get('http://www.baidu.com')print(response.status_c

  • python安装及变量名介绍详解

    python基础部分学习 一,python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,Guido开始写能够解释Python语言语法的解释器.Python这个名字,来自Guido所挚爱的电视剧Monty Python's Flying Circus.他希望这个新的叫做Python的语言,能符合他的理想:创造一种C和shell之间,功能全面,易学易用,可拓展的语言. Python可以应用于众多领域,如:数据分析.组件集成.网络服务.图像处理

  • Python+Turtle绘制可爱的小蜜蜂详解

    目录 一.效果展示 二.代码详解 1.导入库 2.播放音乐 3.画小蜜蜂的头 4.画脖子和腹部 三.完整代码 公众号中有个朋友私信我,想要帮忙画下小蜜蜂. 答应了有时间就帮忙画下,趁着五一休息,今天就一起来实现一下吧. 一.效果展示 在正式进入代码讲解之前,先来看下本文的实现效果. 感兴趣的朋友可以根据自己的需要调整函数,绘制别的形状的小蜜蜂. 二.代码详解 本小节会详细解锁如何通过Python中的turtle库绘制小蜜蜂. 1.导入库 首先导入本文需要加载的库,如果你有些库还没有安装,导致运行

随机推荐