很久沒有發表博文,墮落了python
python是一門解釋型,交互式的,面向對象的編程語言,它集成模塊,異常,動態類型,很是高級的動態數據類型和類。 編程
pygame就是其中一個遊戲開發的模塊app
如下是我仿照甲魚寫的一個小型遊戲:dom
import pygame import sys import math from pygame.locals import * from random import * class Ball(pygame.sprite.Sprite): def __init__(self, image, position, speed, bg_size): pygame.sprite.Sprite.__init__(self) self.image = pygame.image.load(image).convert_alpha() self.rect = self.image.get_rect() self.rect.left, self.rect.top = position self.speed = speed self.width, self.height = bg_size[0], bg_size[1] def move(self): self.rect = self.rect.move(self.speed) if self.rect.right < 0: self.rect.left = self.width elif self.rect.left > self.width: self.rect.right = 0 elif self.rect.top > self.height: self.rect.bottom = 0 elif self.rect.bottom < 0: self.rect.top = self.height #碰撞檢測 def collide_check(item, target): coll_balls = [] for each in target: distance = math.sqrt\ (math.pow((item.rect.center[0] - each.rect.center[0]), 2) + \ math.pow((item.rect.center[1] - each.rect.center[1]), 2)) if distance <= (item.rect.width + each.rect.width) / 2: coll_balls.append(each) return coll_balls def main(): pygame.init() pygame.mixer.init() ball_image = "gray_ball.png" bg_image = "background.png" running =True BALL_NUM = 6 #添加背景音樂 pygame.mixer.music.load("bg_music.ogg") pygame.mixer.music.set_volume(0.4) pygame.mixer.music.play() #添加音效,要使用的時候添加play()方法 cat_sound = pygame.mixer.Sound("cat.wav") dog_sound = pygame.mixer.Sound("dog.wav") hole_sound = pygame.mixer.Sound("hole.wav") laugh_sound = pygame.mixer.Sound("laugh.wav") loser_sound = pygame.mixer.Sound("loser.wav") winner_sound = pygame.mixer.Sound("winner.wav") #設置音量 cat_sound.set_volume(0.8) dog_sound.set_volume(0.3) #音樂播放完時遊戲結束 GAMEOVER = USEREVENT pygame.mixer.music.set_endevent(GAMEOVER) #基本設置 bg_size = width, height = 1024, 666 screen = pygame.display.set_mode(bg_size) pygame.display.set_caption("shengtaoWorld!") background = pygame.image.load(bg_image).convert_alpha() balls = [] #實例化類 for each in range(BALL_NUM): position = randint(0, width-100), randint(0, height-100) speed = [randint(-10, 10), randint(-10, 10)] ball = Ball(ball_image, position, speed, bg_size) #使球運行時 while collide_check(ball, balls): ball.rect.left, ball.rect.top = randint(0, width-100), randint(0, height-100) balls.append(ball) clock = pygame.time.Clock() while running: for event in pygame.event.get(): if event.type == QUIT: sys.exit() elif event.type == GAMEOVER: loser_sound.play() pygame.time.delay(2000) laugh_sound.play() running = False #鼠標檢測 elif event.type == MOUSEBUTTONDOWN: if event.button == 1: cat_sound.play() if event.button == 3: dog_sound.play() if event.button == 2: for i in range(8): cat_sound.play() screen.blit(background, (0, 0)) #試球運動 for each in balls: each.move() screen.blit(each.image, each.rect) # for i in range(BALL_NUM): item = balls.pop(i) if collide_check(item, balls): item.speed[0] = -item.speed[0] item.speed[1] = -item.speed[1] balls.insert(i, item) pygame.display.flip() clock.tick(30) if __name__ == "__main__": main()