弹球

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. 【1】【MOOC】Python游戏开发入门-北京理工大学【第二部分-游戏开发之框架】

    学习地址链接:http://www.icourse163.org/course/0809BIT021E-1001873001?utm_campaign=share&utm_medium=and ...

  2. Python游戏开发:pygame游戏开发常用数据结构

    一.数组与列表 数组可以理解为简化的列表.像我们之前使用的pygame.sprite.Group这样的精灵组,也是一个列表.列表的元素是可变的,它具有添加.删除.搜索.排序等多种方法. 1.一维列表 ...

  3. Python游戏开发——打砖块

    打砖块游戏向来大家也不会很陌生,今天来用python来开发一下这个小游戏 1.引用对应数据库 import pygame from pygame.locals import * import sys, ...

  4. Coco2d-x android win7 Python 游戏开发环境的搭建

    1:我用的电脑配置 win7 3 核 内存8G 桌面.一直想学习Coco2d 游戏开发,所以,一个星期后,需要找到,最终建立了一个良好的环境 2:我使用的版本号版本号,至于建筑android开发环境略 ...

  5. Python游戏开发入门

    Pygame简介与安装 1.Pygame安装 pip install pygame2.检测pygame是否安装成功 python -m pygame.examples.aliens Pygame最小开 ...

  6. python游戏开发:pygame事件与设备轮询

    一.pygame事件 1.简介 pygame事件可以处理游戏中的各种事情.其实在前两节的博客中,我们已经使用过他们了.如下是pygame的完整事件列表: QUIT,ACTIVEEVENT,KEYDOW ...

  7. python游戏开发:pygame中的IO、数据

    一.python输入输出 1.输出 python一次可以打印多个变量,只要用一个逗号将每个变量隔开就可以了.比如: A = 123B = "ABC"C = 456D = " ...

  8. Python游戏编程(Pygame)

    安装Pygame pip install pygame C:\Users> pip install pygame Collecting pygame Downloading https://fi ...

  9. python游戏开发之俄罗斯方块(一):简版

    编程语言:python(3.6.4) 主要应用的模块:pygame (下面有源码,但是拒绝分享完整的源码,下面的代码整合起来就是完整的源码) 首先列出我的核心思路: 1,图像由"核心变量&q ...

随机推荐

  1. 【OSGI】1.初识OSGI-到底什么是OSGI

    目前,业内关于OSGI技术的学习资源或者技术文档还是很少的.我在某宝网搜索了一下“OSGI”的书籍,结果倒是有,但是种类少的可怜,而且几乎没有人购买. 因为工作的原因我需要学习OSGI,所以我不得不想 ...

  2. vc创建模态和非模态对话框

    模态对话框的创建 创建模态对话框需要调用CDialog类的成员函数:DoModal,该函数的功能就是创建并显示一个模 态对话框,关闭模态对话框的函数是EndDialog,该函数需要一个参数,这个参数就 ...

  3. Codeforces735D Taxes 2016-12-13 12:14 56人阅读 评论(0) 收藏

    D. Taxes time limit per test 2 seconds memory limit per test 256 megabytes input standard input outp ...

  4. Linux操作系统文件系统基础知识详解

    一 .Linux文件结构 文件结构是文件存放在磁盘等存贮设备上的组织方法.主要体现在对文件和目录的组织上. 目录提供了管理文件的一个方便而有效的途径. Linux使用标准的目录结构,在安装的时候,安装 ...

  5. vsftpd 常见问题

    一.vsftp服务能开启却连接不上的解决办法: 用虚拟机装了centos,vsftp是用centos自带的.启动vsftd服务后却一直连不上,原因是被防火墙给挡了. 查看防火墙状态:/etc/init ...

  6. Asp.net MVC Linq to SQL Model verification

    Models public class Student { public int Id { get; set; } [Required(ErrorMessage = "姓名不能为空!&quo ...

  7. JVM伪共享

    CPU缓存中的cache line缓存行是缓存的最小单位,同一个时刻内只允许一个cpu内核进行操作.一般,缓存行的大小为64字节,这样的大小可以存放多个java对象的对象头.因此,当两个不同的线程同时 ...

  8. C++中new申请动态数组

    C++中数组分为静态数组和动态数组,静态数组必须确定数组的大小,不然编译错误:而动态数组大小可以不必固定,用多少申请多少.静态数组类于与我们去餐馆吃饭,餐馆会把菜做好.而动态数组类似于我们自己买菜做饭 ...

  9. Good Bye 2017 C. New Year and Curling

    Carol is currently curling. She has n disks each with radius r on the 2D plane. Initially she has al ...

  10. Spring MVC+MySQL保存中文变成乱码

    环境:MySQL,Spring MVC3.2.0,jQuery v2.0.3,使用JdbcTemplate访问数据库,相当于全套Spring解决方案. 现象 直接使用表单POST,或者使用jQuery ...