"""拦球小游戏可以有很多种制作方法,这里是用pygame模块制作的,运行前需要先安装pygame"""
import pygame
from pygame.locals import *
from random import randint
pygame.init()
屏幕宽度=480
屏幕高度=360
screen = pygame.display.set_mode((屏幕宽度,屏幕高度))
pygame.display.set_caption("pygame制作的拦弹球小游戏_作者:李兴球 ")
pygame.mixer.init()
碰撞声 = pygame.mixer.Sound("碰撞.wav")
click = pygame.mixer.Sound("click.wav")
delete = pygame.mixer.Sound("delete.wav")
碰拦板 = pygame.mixer.Sound("碰好.wav")
失败声 = pygame.mixer.Sound("失败.wav")
bgmusic = pygame.mixer.music.load("背景音乐.wav")
pygame.mixer.music.play(-1,0)
class board():
def __init__(self ):
self.x = 200
self.y = 300
self.w = 120
self.h = 20
self.entity = pygame.draw.rect(screen,(0,255,255),(self.x,self.y,self.w,self.h))
def move(self):
mpos = pygame.mouse.get_pos()
self.x = mpos[0] - self.w/2
#self.y = mpos[1] - self.h/2
def draw(self):
pygame.draw.rect(screen,(0,255,255),(self.x,self.y,self.w,self.h))
class Ball():
def __init__(self,board):
self.isalive=True #描述弹球状态的逻辑变量
self.board = board
self.entity = pygame.draw.circle(screen,(255,255,0),(屏幕宽度//2,屏幕高度//2),10,10)
self.speed=[randint(-10,10),randint(-10,10)]
def collideboard(self):
if self.entity.centerx>self.board.x and self.entity.centerx<(self.board.x + self.board.w):
if self.entity.bottom>self.board.y and self.entity.bottom<(self.board.y+self.board.h):
return True
return False
def lostcheck(self):
if self.entity.bottom>=屏幕高度:
self.isalive= False
delete.play()
def move(self):
self.speed[0]=self.speed[0]*1.001
self.speed[1]=self.speed[1]*1.001
self.entity.move_ip(self.speed[0],self.speed[1])
if self.entity.right>屏幕宽度 or self.entity.left<0:
碰撞声.play()
self.speed[0] = - self.speed[0]
if self.entity.top<0:
碰撞声.play()
self.speed[1] = - self.speed[1]
if self.collideboard():
碰拦板.play()
self.speed[1] = - self.speed[1]
self.lostcheck()
def draw(self):
pygame.draw.circle(screen,(255,255,0),(self.entity.centerx,self.entity.centery),10,10)
拦板 = board()
篮子 = [ Ball(拦板),Ball(拦板)]
封面 = pygame.image.load("封面.png")
没单击=True
while 没单击:
for event in pygame.event.get():
if event.type==MOUSEBUTTONDOWN:
click.play()
没单击=False
screen.blit(封面,(0,0))
pygame.display.update()
font = pygame.font.Font("C:/windows/fonts/msyh.ttf",28) #微软雅黑
gameover= font.render("游戏结束! 作者:李兴球",True,(255,0,0))
(fx,fy,fw,fh) = gameover.get_rect()
clock = pygame.time.Clock()
运行中 = True
while 运行中:
for event in pygame.event.get():
if event.type==QUIT:
pygame.quit()
screen.fill((0,0,0))
for ball in 篮子:
ball.move()
ball.draw()
for ball in 篮子:
if ball.isalive==False:
篮子.remove(ball)
if 篮子==[]:
screen.blit(gameover,(屏幕宽度//2 - fw//2,屏幕高度//2 - fh//2))
失败声.play()
运行中 = False
else:
拦板.move()
拦板.draw()
pygame.display.update()
clock.tick(30)