Python -- 游戏开发 -- PyGame的使用
弹球
pong.py
import sys
import pygame
from pygame.locals import *
class MyBallClass(pygame.sprite.Sprite):
def __init__(self, img_file, location, speed):
pygame.sprite.Sprite.__init__(self)
self.image = pygame.image.load(img_file)
self.rect = self.image.get_rect()
self.rect.left, self.rect.top = location
self.speed = speed
def move(self):
global points
self.rect = self.rect.move(self.speed)
if self.rect.left<0 or self.rect.right>screen.get_width():
self.speed[0] *= -1
if self.rect.bottom <= paddle.rect.top+1:
points += 1
ball_bounce.play()
if self.rect.top <= 0:
self.speed[1] *= -1
points += 1
ball_bounce.play()
class MyPaddleClass(pygame.sprite.Sprite):
def __init__(self, img_file, location):
pygame.sprite.Sprite.__init__(self)
self.image = pygame.image.load(img_file)
self.rect = self.image.get_rect()
self.rect.left, self.rect.top = location
pygame.init()
pygame.mixer.init()
splat = pygame.mixer.Sound("audio\\ball_bounce.wav")
ball_bounce = pygame.mixer.Sound("audio\\balloon_pop.wav")
screen = pygame.display.set_mode([1024, 768])
pygame.display.set_caption('火龙果2')
clock = pygame.time.Clock()
ball_speed = [2, 1]
ball_img = 'img\\dragon (1).ico'
myBall = MyBallClass(ball_img, [50,50], ball_speed)
ballGroup = pygame.sprite.Group(myBall)
paddle_img = 'img\\apple2.jpg'
paddle = MyPaddleClass(paddle_img, [400, 550])
points = 0
font = pygame.font.Font(None, 100)
collide = False #是否相撞
lives = 3
lives_image = pygame.image.load("img\\pig.ico")
gameover = False
while 1:
clock.tick(150)
screen.fill([255, 255, 255])
for event in pygame.event.get():
if event.type == QUIT:
sys.exit()
elif event.type == MOUSEMOTION:
paddle.rect.centerx = event.pos[0]
if pygame.sprite.spritecollide(paddle, ballGroup, False):
if myBall.rect.bottom <= 551:
myBall.speed[1] = -abs(myBall.speed[1])
if (not collide) and (myBall.rect.bottom<=paddle.rect.top+1):
points += 1
splat.play()
collide = True
else:
collide = False
if not gameover:
myBall.move()
screen.blit(myBall.image, myBall.rect)
screen.blit(paddle.image, paddle.rect)
score_str = 'Score:' + str(points)
score_text = font.render(score_str, 1, (0,0,0))
score_rect = score_text.get_bounding_rect()
score_width = score_rect.width
textpos = [screen.get_rect().width-score_width-10, 20]
screen.blit(score_text, textpos)
for i in range(lives-1):
screen.blit(lives_image, [128*i, 0])
pygame.display.flip()
if myBall.rect.top >= screen.get_rect().bottom:
lives -= 1
if lives == 0:
final_text1 = "Game Over"
final_text2 = "Your final score is: " + str(points)
font1 = pygame.font.Font(None, 70)
surf1 = font1.render(final_text1, 1, (0,0,0))
font2 = pygame.font.Font(None, 50)
surf2 = font2.render(final_text2, 1, (0,0,0))
screen.blit(surf1, [screen.get_width()/2 - surf1.get_width()/2, 200])
screen.blit(surf2, [screen.get_width()/2 - surf2.get_width()/2, 300])
pygame.display.flip()
gameover = True
else:
pygame.time.delay(1000)
myBall.rect.topleft = [lives*128, 0]


Python -- 游戏开发 -- PyGame的使用的更多相关文章
- 【1】【MOOC】Python游戏开发入门-北京理工大学【第二部分-游戏开发之框架】
学习地址链接:http://www.icourse163.org/course/0809BIT021E-1001873001?utm_campaign=share&utm_medium=and ...
- Python游戏开发:pygame游戏开发常用数据结构
一.数组与列表 数组可以理解为简化的列表.像我们之前使用的pygame.sprite.Group这样的精灵组,也是一个列表.列表的元素是可变的,它具有添加.删除.搜索.排序等多种方法. 1.一维列表 ...
- Python游戏开发——打砖块
打砖块游戏向来大家也不会很陌生,今天来用python来开发一下这个小游戏 1.引用对应数据库 import pygame from pygame.locals import * import sys, ...
- Coco2d-x android win7 Python 游戏开发环境的搭建
1:我用的电脑配置 win7 3 核 内存8G 桌面.一直想学习Coco2d 游戏开发,所以,一个星期后,需要找到,最终建立了一个良好的环境 2:我使用的版本号版本号,至于建筑android开发环境略 ...
- Python游戏开发入门
Pygame简介与安装 1.Pygame安装 pip install pygame2.检测pygame是否安装成功 python -m pygame.examples.aliens Pygame最小开 ...
- python游戏开发:pygame事件与设备轮询
一.pygame事件 1.简介 pygame事件可以处理游戏中的各种事情.其实在前两节的博客中,我们已经使用过他们了.如下是pygame的完整事件列表: QUIT,ACTIVEEVENT,KEYDOW ...
- python游戏开发:pygame中的IO、数据
一.python输入输出 1.输出 python一次可以打印多个变量,只要用一个逗号将每个变量隔开就可以了.比如: A = 123B = "ABC"C = 456D = " ...
- Python游戏编程(Pygame)
安装Pygame pip install pygame C:\Users> pip install pygame Collecting pygame Downloading https://fi ...
- python游戏开发之俄罗斯方块(一):简版
编程语言:python(3.6.4) 主要应用的模块:pygame (下面有源码,但是拒绝分享完整的源码,下面的代码整合起来就是完整的源码) 首先列出我的核心思路: 1,图像由"核心变量&q ...
随机推荐
- docker 命令介绍
查看镜像 docker images: 列出imagesdocker images -a :列出所有的images(包含历史)docker images --tree :显示镜像的所有层(layer) ...
- Sensor fusion(传感器融合)
From Wikipedia, the free encyclopedia 来自维基百科,免费的百科Sensor fusion is combining of sensory data or data ...
- 保留注释换行的python模块configparser
python语言用来解析配置文件的模块是ConfigParser,python3中是configparser模块,我在使用中发现write方法在将配置项重新写入文 件时,配置文件中的空行和注释行都会被 ...
- Shell编程-06-Shell中的if语句
目录 基本语法 if示例 在任何一门语言中,判断语句总是少不了,今天来学习一下Shell中的if语句. 基本语法 单分支情况 第一种语法 if <条件表达式> then 语句 fi ...
- C++中的关键字用法--- explicit
1. C++中的explicit C++提供了关键字explicit,可以阻止不应该允许的经过转换构造函数进行的隐式转换的发生.声明为explicit的构造函数不能在隐式转换中使用. C++中, 一个 ...
- OpenGL中的帧缓存
OpenGL中的帧缓存 在OpenGL窗口中, 左下角的像素为(0, 0). 一般而言, 像素(x, y)占据的矩形区域左下角为(x, y), 右上角为(x+1, y+1). 1. 缓存及其用途 [1 ...
- css控制英文内容自动换行問題
css控制英文内容自动换行 HTML: <!-- 因为要显示的内容是用户通过CMS添加进入数据库,再抓取出来前台显示的,所以你根本无法 控制每一行内容的长度. 所以我在显示内容的div设置了一个 ...
- 【Win10】页面的导航效果
CommonNavigationTransitionInfo ContinuumNavigationTransitionInfo DrillInNavigationTransitionInfo Ent ...
- linux系统编程之信号(三):信号安装、signal、kill,arise讲解
一,信号安装 如果进程要处理某一信号,那么就要在进程中安装该信号.安装信号主要用来确定信号值及进程针对该信号值的动作之间的映射关系,即进程将要处理哪个信号:该信号被传递给进程时,将执行何种操作. li ...
- Android应用安全防护和逆向分析 ——apk反编译
概述 最近一直在学习Android应用安全相关和逆向分析的知识.现在移动app在安全方面是越来越重视了,特别是那些巨头企业涉及到钱的应用,那加密程度,简直是丧心病狂,密密麻麻.从这里可以看出,对于应用 ...