灭霸的宝石_摘自李兴球著《Python创意编程之Pygame教程》源代码

"""
   灭霸的宝石,这是一个简单的接物小游戏。
   在这个游戏中,宝石用彩色的圆圈表示,它们会不断地落下来。
   用鼠标指针左右操作灭霸去接这些宝石,当接到一定数量的宝石后,
   游戏就应该结束,请自行设计结束游戏代码。
"""

import pygame
from pygame.locals import *
from random import randint

def random_color():
    """产生随机RGB颜色"""
    r = randint(0,255)
    g = randint(0,255)
    b = randint(0,255)    
    return r,g,b

def random_circle():
    """产生一个圆形图"""
    radius = randint(10,20)                # 随机半径
    image = pygame.Surface((radius*2,radius*2))
    image.set_colorkey((0,0,0))
    # 随机RGB颜色 
    color = random_color()
    pygame.draw.circle(image,color,(radius,radius),radius)
    return image
    
class Gemstone(pygame.sprite.Sprite):
    """宝石类,继承自角色类"""
    def __init__(self,screen,group):
        """
           screen:所在屏幕,group:所在组
        """        
        pygame.sprite.Sprite.__init__(self)    # 初始化父类
        self.sw = screen.get_width()           # 屏幕宽席
        self.sh = screen.get_height()          # 屏幕高度        
        self.image = random_circle()           # 宝石的图像      
        self.rect = self.image.get_rect()      # 获取矩形对象
        position = randint(0,self.sw),randint(-200,-50)
        self.rect.center = position            # 定矩形的位置
        self.dx = 0                            # 水平方向单位位移
        self.dy = randint(9,15)                # 垂直方向单位位移 
        self.add(group)                        # 加入到组中 

    def update(self):
        """更新坐标"""
        self.rect.move_ip(self.dx,self.dy)     # 移动矩形
        self.bottom_detect()                   # 碰到底检测
        
    def bottom_detect(self):
        """碰到边缘就从组中移除自己"""
        if self.rect.top>self.sh : self.kill()

You must log in to read the rest of this article. Please log in or register as a user.