天天看點

pygame小遊戲代碼_雙人彈球小遊戲

pygame小遊戲代碼_雙人彈球小遊戲

雙人彈球小遊戲

pygame小遊戲代碼_雙人彈球小遊戲

哈喽大家好呀,我是滑稽君。我們之前發送過一篇文章名為pygame反彈小球的文章,這次我們帶來了它的雙人對戰版。

我們想實作的功能是螢幕兩側有兩個擋闆,當我們接住小球時,小球會被彈回去。若有一方沒有接住小球則遊戲結束,

我們需要解決的問題有小球的觸壁反彈,判定小球是否被我們接住以及球被接住之後的反彈。OK,确定了需求讓我們看看如何實作吧。

視訊講解:

源代碼:

import pygameimport sysimport timepygame.init()m = 1000n = 600size = width,height = m,n#視窗大小screen = pygame.display.set_mode(size)#繪制螢幕color = 255,255,255ball = pygame.image.load('ball.png')#導入小球圖檔ball = pygame.transform.scale(ball, (50, 50))ballrect = ball.get_rect()speed =[5,5]state_time = pygame.time.Clock()#rightrect = pygame.image.load('rect_1.png')#導入rect = pygame.transform.scale(rect, (30, 200))rectarea = rect.get_rect()x,y=m-30,n-200#leftbox = pygame.image.load('rect_2.png')#導入box = pygame.transform.scale(box, (30, 200))boxarea = box.get_rect()h,z=0,n-200move_h=move_z=0mRunning = Truewhile mRunning :  # 死循環確定視窗一直顯示    for event in pygame.event.get():  # 周遊所有事件        if event.type == pygame.QUIT :  # 如果單擊關閉視窗,則退出            mRunning = False         #鍵盤響應部分                    if event.type == pygame.KEYDOWN:            if event.key == pygame.K_w:                move_z = -10            elif event.key == pygame.K_s:                move_z = 10                    elif event.type == pygame.MOUSEMOTION:              v,b = pygame.mouse.get_pos()            y = b-100                    elif event.type == pygame.KEYUP:            move_z = 0            z += move_z    state_time.tick(50)    ballrect = ballrect.move(speed)    screen.fill(color)#每次循環填充背景色    screen.blit(ball,ballrect)    screen.blit(rect,(x,y))    screen.blit(box,(h,z))    pygame.display.flip()    #小球碰壁反彈處理    if ballrect.top < 0 or ballrect.bottom > height:        speed[1] = -speed[1]         elif ballrect.right==m-30 and ballrect.top+50>=y and ballrect.top<=y+200 :        speed[0] = -speed[0]                elif ballrect.left==30 and ballrect.top+50>=z and ballrect.top<=z+200 :        speed[0] = -speed[0]              elif ballrect.left<0 or ballrect.left>m:        mRunning = False            pygame.quit()
           

可以看到我實作了預想的功能。需要大家重點了解的是小球是否被接住的條件判定部分。還有就是滑稽君在這裡使用鍵盤+滑鼠的玩法,有朋友會想,為什麼不讓右邊一方也使用方向鍵來控制呢?

原因是按鍵沖突,最先按壓鍵盤的一方會被後按壓鍵盤的一方打斷,也就是形成停頓,想象一下你在開車時突然有人搶你方向盤的那種感覺吧。而一方用鍵盤控制,一方用滑鼠則解決了這種尴尬的情況。

可能有小夥伴就喜歡兩個都用滑鼠玩,是否可以實作呢?考慮一下多線程吧,感興趣的小夥伴自己嘗試一下。

遊戲運作出來的樣子在視訊裡哦。

往期推薦:

pygame反彈的小球

pygame小遊戲代碼_雙人彈球小遊戲

THE END

pygame小遊戲代碼_雙人彈球小遊戲

主要的功能功能已經實作,想要DIY 的小夥伴,在代碼主體上進行增添或修改即可。最後我們思考一下接住小球的究竟是代碼,還是擋闆呢?

pygame小遊戲代碼_雙人彈球小遊戲