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()
運行的結果如下:
像素較差。。。。。。