一:简介

  • pygame专门用于多媒体(如电子游戏开发),其中包含对图像、声音、视频、事件、碰撞等支持,
  • 如果想开发3D游戏,pygame就显得力不从心了,可以看看panda3d。
  • pygame中的draw模块可以在窗口上绘图如线条、矩形、多边形、圆、椭圆、圆弧等。
  • pygame中的image模块用来加载图片。
pip install pygame

二:大球吃小球案例

单击鼠标在鼠标单击位置产生一个随机大小,随机颜色的圆,然后不停的移动。再单击一个圆出来,当两个圆相撞的时候将小球隐藏掉,大球的半径变大。

import pygamefrom enum import Enum, unique
from math import sqrt
from random import randint@unique
class Color(Enum):RED = (255, 0, 0)GREEN = (0, 255, 0)BLUE = (0, 0, 255)BLACK = (0, 0, 0)WHITE = (255, 255, 255)GRAY = (242, 242, 242)@staticmethoddef random_color():r = randint(0, 255)g = randint(0, 255)b = randint(0, 255)return r, g, bclass Ball:def __init__(self, x, y, radius, sx, sy, color=Color.RED):self.x = xself.y = yself.radius = radiusself.sx = sxself.sy = syself.color = colorself.alive = Truedef move(self, screen):"""移动"""self.x += self.sxself.y += self.syif self.x - self.radius <= 0 or self.x + self.radius >= screen.get_width():self.sx = - self.sxif self.y - self.radius <= 0 or self.y + self.radius >= screen.get_height():self.sy = - self.sydef eat(self, other):"""吃其它球"""if self.alive and other.alive and self != other:dx, dy = self.x - other.x, self.y - other.ydistance = sqrt(dx ** 2 + dy ** 2)if distance < self.radius + other.radius and self.radius > other.radius:other.alive = Falseself.radius = self.radius + int(other.radius * 0.146)def draw(self, screen):pygame.draw.circle(screen, self.color, (self.x, self.y), self.radius, 0)def main():# 所有球balls = []pygame.init()# 设置窗口标题pygame.display.set_caption('大球吃小球')# 显示窗口并设置窗口尺寸screen = pygame.display.set_mode((800, 600))# 加载图片# ball_img = pygame.image.load('ball.png')# 在窗口上渲染图片# screen.blit(ball_img, (50, 50))# 开启一个事件循环:用于处理发生的事件running = Truewhile running:# 从消息队列中获取事件并对事件进行处理for event in pygame.event.get():if event.type == pygame.QUIT:running = False# 鼠标事件if event.type == pygame.MOUSEBUTTONDOWN and event.button == 1:# 获取鼠标点击的位置x, y = event.posradius = randint(10, 100)sx, sy = randint(-10, 10), randint(-10, 10)color = Color.random_color()ball = Ball(x, y, radius, sx, sy, color)balls.append(ball)# 设置窗口的背景色RGBscreen.fill((255, 255, 255))for ball in balls:if ball.alive:ball.draw(screen)else:balls.remove(ball)# 刷新当前窗口(渲染窗口将绘制的图形呈现出来)pygame.display.flip()# 每隔50毫秒就改变小球的位置在刷新窗口pygame.time.delay(50)for ball in balls:ball.move(screen)for other in balls:ball.eat(other)if __name__ == '__main__':main()

Python游戏篇:pygame相关推荐

  1. Python游戏工具包---Pygame最常用的15个模块详解(附pdf版本)

    ↑ 点击上方 "一行数据" 关注 + 星标 ~ 每周送书,绝不错过 本文不查错,三连送书 最近很多读者想学习使用python来制作游戏,其中最经典的工具包就是Pygame ,如果单 ...

  2. python游戏库pygame经典教程

    目录 一.Pygame程序基本搭建过程 1.初始化化程序 2.创建Surface对象 3.事件监听 4.游戏循环 二.Pygame Display显示模块详解 1.将Surface对象粘贴至主窗口上 ...

  3. Python游戏开发pygame模块,Python实现球球碰撞小游戏

    相信大家在初中电脑课上都偷偷玩过 Flash 游戏--是男人就坚持 100 秒,在游戏中无数的小球随机运动,玩家用鼠标控制大球,当大球碰撞到小球后,游戏结束,显示坚持的时间.今天我们一起来开发这个小游 ...

  4. 【Python游戏】pygame模块制作飞机大战、贪吃蛇(多模式)含源码

    pygame模块制作飞机大战.贪吃蛇(多版本) 本章意在学习pygame模块以及巩固python语法. 若有需请转去个人github:https://github.com/onlyhyl/pyGame

  5. Python游戏开发pygame模块,Python实现吃豆人,儿时的回忆

    老规矩,先上效果图 这是一个吃豆人的小游戏.我们8090后这一代人肯定会碰到过.黄点是我们自己,红点就是怪物们.这是最原始版的电子游戏. 然后我们可以在随便一个地方新建一个游戏代码,利用这个包的代码, ...

  6. Python基础篇(十五)-- Pygame游戏编程

    1 初识Pygame Pygame是一个开源的Python模块,专门用于多媒体应用(如电子游戏)的开发,其中包含对图像.声音.视频.事件.碰撞等的支持.Pygame建立在SDL的基础上,SDL是一套跨 ...

  7. Pygame - Python游戏编程入门(1)

    前言 在上一篇中,我们初步熟悉了pygame的控制流程,但这对于一个游戏而言是远远不够的.所以在这一篇中,我们的任务是添加一架飞机(玩家),并且能够控制它进行移动,这样我们就又离目标进了一步了~ε=ε ...

  8. python的pygame库使用方法_python基础教程使用Python第三方库pygame写个贪吃蛇小游戏...

    今天看到几个关于pygame模块的博客和视频,感觉非常有趣,这里照猫画虎写了一个贪吃蛇小游戏,目前还有待完善,但是基本游戏功能已经实现,下面是代码: # 导入模块 import pygame impo ...

  9. python怎样导入游戏库_如何安装python的游戏模块pygame

    python是个很有趣的语言,可以在cmd命令窗口运行,还有很多的功能强大的模块.这篇经验告诉你如何安装python的游戏模块pygame 工具/原料 windows系统电脑一台 python软件 方 ...

最新文章

  1. [20170914]tnsnames.ora的管理.txt
  2. JAVA项目实训struts2_Java Web项目搭建过程记录(struts2)
  3. 【机器学习】模型压缩大杀器!详解高效模型设计的自动机器学习流水线
  4. 卖完砖头的Supreme要卖手机了 这种手机就不要讨论配置了吧...
  5. 消防信号总线原理_AFPM100/B消防设备电源监控系统在百色市人民医院消防设备电源监控系统的应用-安科瑞 华梅超...
  6. 避免数据二次提交的处理方式
  7. Web Components 系列(十)—— 实现 MyCard 的基本布局
  8. MySQL分页查询优化
  9. idea 用鼠标滚轮调整代码文字大小
  10. apms阅卷系统服务器,Win 8系统运行APMS阅卷系统的解决办法
  11. 全球与中国调频广播发射机市场深度研究分析报告
  12. Mybatis 缓存
  13. Codeforces - Chloe and pleasant prizes
  14. Timer和counter
  15. C# 调用腾讯云的短信发送服务API
  16. 游戏制作之路(25)Camera(摄像机)的清除标志Solid color
  17. python中math的ln_Python math库 ln(x)运算的实现及原理
  18. CGWallpapers网站不登录下载图片
  19. 在OpenCV里实现二维离散卷积1
  20. 关于关闭WPS锁屏屏保及设置电脑自动关闭显示屏及休眠的分享

热门文章

  1. Scray和selenium的使用
  2. python 安装包无法安装系列解决方法
  3. 《J2SE 回炉再造13》-------溺水狗
  4. Python Web在线考试管理系统【源码+毕设论文】
  5. 如何开发API,这样一份完整的API开发指南足够了
  6. 如何批量给图片重命名序号和名字?
  7. 谷歌镜像——遇到异常流量解决方法
  8. (个人)太极拳学习系统创新实训第四周
  9. Matlab图像处理app(截图暂时只能截取原图或灰度图)
  10. R语言【SPSS的sav数据导入Rstudio】