用pygame模块制作的双人乒乓小游戏。在程序中有拍子类,有球类,有玩家类,有碰撞检测等等。下面是部分代码预览:
"""
2D双人乒乓球小游戏
"""
__author__ = '李兴球'
__date__ = '2019年3月30日'
import random
import pygame
from pygame.locals import *
class Ball(pygame.sprite.Sprite):
"""球类,继承自Sprite类"""
def __init__(self,image,screen):
"""image:球图"""
def update(self):
"""更新小球的移动"""
class Bat(pygame.sprite.Sprite):
"""拍子类"""
class Player(pygame.sprite.Sprite):
"""玩家类"""
def collide_check(ball,bat_up,bat_down,player_up,player_down,scorefont):
"""球碰到球拍的碰撞检测"""
def game_over_check(ball,height,蓝方赢,红方赢):
"""游戏结束检测,球的速度会越来越快,小球超出上边界,则下方赢,反之上方赢"""
global end_string,game_over
.......................
def main():
"""主要函数"""
global collide_delay_counter,game_over,end_string,up_score_string,down_score_string
width,height = 500,800
pygame.init()
screen = pygame.display.set_mode((width,height))
pygame.display.set_caption("2D双人乒乓球小游戏")
background = pygame.image.load("场地.png")
Referee = pygame.image.load("cp.png") # 裁判
up_score_string = pygame.Surface((0,0))
down_score_string = pygame.Surface((0,0))
collide_delay_counter = 0 # 防止重复碰撞的变量
images_bat = "蓝拍右.png","红拍左.png"
images_bat = [ pygame.image.load(image) for image in images_bat]
images_player = "人右.png","人左.png"
images_player = [ pygame.image.load(image) for image in images_player]
image_ball = pygame.image.load("ball2.png")
# 生成球
ball = Ball(image_ball,screen)
# 下玩家建立
keys = [K_UP,K_DOWN,K_LEFT,K_RIGHT]
position = (width//2,height-50)
player_down = Player(images_player[0],keys,position)
# 上玩家建立
keys = [K_w,K_s,K_a,K_d]
position = (width//2, 50)
player_up = Player(images_player[1],keys,position)
# 下拍子建立
bat_down = Bat(images_bat[0],player_down,1)
# 上拍子建立
bat_up = Bat(images_bat[1],player_up,-1)
myfont = pygame.font.Font("msyh.ttf",32)
scorefont = pygame.font.Font("msyh.ttf",22)
蓝方赢 = myfont.render("蓝方赢",True,(5,0,255))
红方赢 = myfont.render("红方赢",True,(205,0,5))
end_string = ""
game_over = False
clock = pygame.time.Clock()
running = True
while running:
if collide_delay_counter>0:collide_delay_counter-=1
for event in pygame.event.get():
if event.type == QUIT:running = False
player_down.key_detect()
player_down.update()
player_up.key_detect()
player_up.update()
bat_down.update()
bat_up.update()
ball.update()
collide_check(ball,bat_up,bat_down,player_up,player_down,scorefont)
game_over_check(ball,height,蓝方赢,红方赢)
screen.blit(background,(0,0))
screen.blit(player_down.image,player_down.rect)
screen.blit(player_up.image,player_up.rect)
screen.blit(bat_down.image,bat_down.rect)
screen.blit(bat_up.image,bat_up.rect)
if not game_over: screen.blit(ball.image,ball.rect)
.......................
screen.blit(up_score_string,(25,30))
screen.blit(down_score_string,(width-50,height-60))
pygame.display.update()
clock.tick(60)
pygame.quit()
if __name__ == "__main__":
main()
下载完整源代码与素材,请
需要浏览更多吗?
成为会员后,登陆才能继续浏览!联系微信scratch8即可办理会员。
(会员专属:能浏览所有文章,下载所有带链接的Python资源。)

