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 ...
随机推荐
- 最佳编程字体:M+
英文原文:The Best Font for Programming: M+ 程序员的最佳等宽字体是 M+. 一个偶然机会遇到了这个字体,在命运多舛的 kod 编辑器体验了.这个字体非比寻常,我坚持 ...
- EBS Archiving and Purging: You Know you need to
A number of trends in the IT industry have contributed to the increasing size of ERP application dat ...
- 抱SQL SERVER大腿之我爱用视图(对大数据量的管理)
我们拥有一个巨大的表,两千多万条记录.也许在行家眼里,两千多万条记录顶多算条毛,不过这条毛也忒粗壮了一点:我们的数据库占用的空间已经达到5G多了.不要以为是日志文件在搞鬼,日志文件可以自动收缩的,最多 ...
- WPF选择文件、文件夹和另存为对话框
WPF提供了选择文件对话框,但并没有提供选择文件夹的对话框. OpenFileDialog类存在于PresentationFramework.dll程序集. public string SelectF ...
- java 附件上传、下载前后端代码
前言:业务需要:附件上传,需要同时满足浏览器上传,和APP上传附件,并且浏览器端不可使用form表单提交,因为表单提交无法直接获取返回值,除非刷新页面才可显示上传的附件.所以此处使用ajaxfileu ...
- XCode10.0遇到的问题
1:编译时报info.plist冲突. 解决方法,XCode上 File -> Workspace Settings ... 将Build System改为 Legacy Build Syste ...
- iOS 卡顿
1 使用 dispatch_async,也可能会出现卡顿. 由于mac系统允许overcommit,而iOS系统不允许overcommit 故要控制GCD队列的数量并且最好设置target queue ...
- python 使用dir() help() 查看一个对象所有拥有的方法和属性
可以使用python 的内置方法 dir() 或者help() 查看 某个对象所拥有的方法和属性, 二者间的区别是: dir() : 只是得到方法或者属性的名称 help():不但可以得到对象的方法和 ...
- python os.path 的使用
import os #该文件所在位置:D:\第1层\第2层\第3层\第4层\第5层\test11.py path1 = os.path.dirname(__file__) print(path1)#获 ...
- 3.jquery在js文件中获取选择器对象
一.常用的选择器有一下几种: 1.标签选择器 2.类选择器 3.id选择器 4.并集选择器 5.层级选择器 二.如何获取选择器对象: <!DOCTYPE html> <html la ...