用python做一個簡單的pong游戲


pong游戲就是一個用擋板去控制一個小球不觸底的一個小游戲,上個世紀以電視游戲的方式發行,取得巨大的成功。

看了一點書,知道pygame是python里一個強大的模塊,做出這個游戲的簡易模式也不難。

 

主要思想:1.創建游戲界面,擋板,小球以及記分牌。

     2.小球碰到游戲界面四個邊界會反彈,即x方向和y方向上的速度會改變為負,碰到底邊生命數會減1.

     3.小球與擋板碰撞y方向速度會變負,同時分數加1.

     4.游戲結束會顯示相關文字。

代碼如下:

import  pygame
pygame.init()
screen = pygame.display.set_mode([800,600])

pygame.display.set_caption("pong")
keep_going = True
image = pygame.image.load(".\2.bmp")
# print(type(image))
scale = 100
pic=pygame.transform.scale(image,(scale,scale))
# print(type(pic))
colorkey = pic.get_at((0,0))
pic.set_colorkey(colorkey)#設置游戲界面,加載小球圖片,設置顏色鍵

picx = 0
picy = 0
timer = pygame.time.Clock()
speedX = 5
speedY = 5
paddleW = 200
paddleH = 25
paddleX = 300
paddleY = 550
picW = 100
picH = 100
points = 0
lives = 5
white = (255,255,255)
font = pygame.font.SysFont("C:\\Windows\Fonts\\Corbel",24,False,False)#初始化參數

pygame.mixer.init()
pop = pygame.mixer.music
pop.load(".\w.mp3")#加載聲音

pop.play()

while keep_going:#while的重復繪圖制作出動畫的效果
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            keep_going = False
        if event.type == pygame.KEYDOWN:#注意注意注意
            if event.key ==pygame.K_F1:#F1鍵復位
                points = 0
                lives = 5
                picx = 0
                picy = 0
                speedX = 5
                speedY = 5
    picx+=speedX
    picy+=speedY

    if picx<=0 or picx+pic.get_width()>=800:#值得注意的是游戲界面的坐標是以左上角為原點,
                                            #向右為x正半軸,向下為y正半軸
        speedX=-speedX*1.1
    if picy<=0:
        speedY = -speedY+1
    if picy >=500:
        lives-=1
        # speedY = -speedY
        speedY = -5
        speedX = 5
        picy = 499
    screen.fill((0,0,0))
    screen.blit(pic,(picx,picy))#以上是小球與游戲界面邊界碰撞的邏輯


    paddleX = pygame.mouse.get_pos()[0]
    paddleX-= paddleW/2
    pygame.draw.rect(screen,white,(paddleX,paddleY,paddleW,paddleH))


    if picy+picH>= paddleY and picy +picH<=paddleY+paddleH and speedY>0:#沒有觸底並且速度為正
        if picx +picW/2>=paddleX and picx+picW/2<=paddleX+paddleW:
            points+=1
            speedY = -speedY#與擋板碰撞的邏輯


    draw_string = "lives:"+str(lives)+"Points:"+str(points)

    if lives<1:
        speedY = speedX = 0
        draw_string = "game over! your scores is"+str(points)#游戲結束判斷

    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()

運行的結果如下:

 

像素較差。。。。。。 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM