python小遊戲-用pygame實現笑臉乒乓球彈珠球遊戲


今天我們用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()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章