当前位置 主页 > 服务器问题 > Linux/apache问题 >

    python使用pygame实现笑脸乒乓球弹珠球游戏

    栏目:Linux/apache问题 时间:2019-12-04 09:48

    今天我们用python和pygame实现一个乒乓球的小游戏,或者叫弹珠球游戏。

    笑脸乒乓球游戏功能介绍

    乒乓球游戏功能如下:

    乒乓球从屏幕上方落下,用鼠标来移动球拍,使其反弹回去,并获得得分,如果没有接到该球,则失去一条命。玩家有一定数量的命如5。

    游戏设计思路

    根据游戏规则,我们需要

    1、初始化游戏环境
    2、画出乒乓球,球拍等
    3、设置乒乓球的运动,并监听鼠标,以移动球拍
    4、判断乒乓球被接住与否
    5、游戏是否结束,是否再玩。

    代码实现

    import pygame
    pygame.init()
    screen_width=800
    screen_height=600
    screen=pygame.display.set_mode([screen_width,screen_height])
    pygame.display.set_caption("笑脸乒乓球")
    keepGoing=True
    pic=pygame.image.load("CrazySmile.bmp")
    colorkey = pic.get_at((0,0))
    pic.set_colorkey(colorkey)
    picx=0
    picy=0
    BLACK=(0,0,0)
    WHITE=(255,255,255)
    timer=pygame.time.Clock()
    paddle_width=200
    paddle_height=25
    paddle_x=300
    paddle_y=550
    
    speedx=5
    speedy=5
    #图片的高度和宽度
    pic_width=pic.get_width()
    pic_height=pic.get_height()
    #分数和命
    points=0
    lives=5
    font=pygame.font.SysFont("Times",24)
    pop = pygame.mixer.Sound("pop.wav")
    
    while keepGoing:
     for event in pygame.event.get():
     if event.type==pygame.QUIT:
      keepGoing=False
     if event.type == pygame.KEYDOWN:
      if event.key == pygame.K_F1: # F1 = New Game
      points = 0
      lives = 5
      picx = 0
      picy = 0
      speedx = 5
      speedy = 5
    
     pop.play()
     picx += speedx
     picy += speedy
     if picx <= 0 or picx >= 700:
     speedx = -speedx * 1.1
     if picy <= 0:
     speedy = -speedy + 1
     if picy >= 500:
     lives -= 1
     speedy = -5
     speedx = 5
     picy = 499
     # if picx <= 0 or picx + pic_width > screen_width:
     # speedx = -speedx
     # if picy <= 0:
     # speedy = -speedy
     # if picy >= 500:
     # lives -= 1
     # speedy = -speedy
     screen.fill(BLACK)
     screen.blit(pic, (picx, picy))
     # 画出球拍
     paddle_x = pygame.mouse.get_pos()[0]
     paddle_x -= paddle_width / 2
     pygame.draw.rect(screen, WHITE, (paddle_x, paddle_y, paddle_width, paddle_height))
     #判断接住乒乓球
     if picy + pic_width > paddle_y and picy + pic_height < paddle_y + paddle_height and speedy > 0:
     if picx + pic_width / 2 > paddle_x and picx + pic_width / 2 < paddle_x + paddle_width:
      points += 1
      speedy = -speedy
     # 在屏幕上画出得分
    
     draw_string = "Lives: " + str(lives) + " Points: " + str(points)
     if lives<1:
     draw_string="Game Over. Your scores is "+str(points)
     draw_string+="press F1 to play again"
     text = font.render(draw_string, True, WHITE)
     text_rect = text.get_rect()
     text_rect.centerx = screen.get_rect().centerx
     text_rect.y = 10
     screen.blit(text, text_rect)
     pygame.display.update()
     timer.tick(60)
    
    pygame.quit()

    代码中用的乒乓球是如下图片。

    总结

    1、通过上述代码,功能基本实现
    2、可以有很多改进,如通过键盘来操控球拍,如给游戏加上背景音乐,其中加音乐的方法是

    pop = pygame.mixer.Sound("pop.wav")
    pop.play()

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持IIS7站长之家。