# -*-codeing = utf-8 -*-
# @Time : 2021/7/26 14:48
# @Author : hey_mojibake
# @File 碰壁球_新.py
# @Software : PyCharm
import sys,pygame
pygame.init() # 初始化程式
size = width, height = 400 ,300
speed = [1, 1] # 設定移動的x,y距離
BLACK = 0, 0, 0
screen = pygame.display.set_mode(size)
pygame.display.set_caption("碰壁球")
ball = pygame.image.load(r'C:\Users\hu\Desktop\素材\《足球大亂斗》游戲素材-0 (3)_愛給網_aigei_com.png')
ballrect = ball.get_rect() # 把球視為矩形,更好處理
fps = 300
folock = pygame.time.Clock() # 創建一個Clock物件,用于操作時間 pygame.time.Clock為一個類
# 主體程式***************************************************************************************************************
while True:
#檢查事件
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
elif event.type == pygame.KEYDOWN: # 檢查鍵盤是否有敲擊事件
# K_LEFT 方向左鍵 / K_RIGHT 方向右鍵/ K_UP 方向上鍵/ K_DOWN 方向下鍵
if event.key == pygame.K_LEFT:
speed[0] = speed[0] if speed[0] == 0 else (abs(speed[0]) - 1) * int (speed[0])/abs(speed[0])
#首先執行speed[0] == 0,成立執行speed[0] = speed[0],否則執行(abs(speed[0]) - 1) * int (speed[0])/abs(speed[0])
#此代碼用于檢測速度是否為0,為0則無法繼續減速;后面代碼為減少代碼bug,首先速度不為0取絕對值,后減一;乘于速度在除于速度的絕對值為了取原速度的正負
elif event.key ==pygame.K_RIGHT:
speed[0] = speed[0] + 1 if speed[0] > 0 else speed [0] - 1
elif event.key == pygame.K_UP:
speed[1] = speed[1] + 1 if speed[1] > 0 else speed[1] -1
elif event.key == pygame.K_DOWN:
speed [1] =speed[1] if speed[1] == 0 else (abs(speed[1]) - 1) * int(speed[1]/abs((speed[1])))
elif event.key == pygame.K_ESCAPE:
sys.exit()
# left = x / right = u / width = u-x / height = w-y / bottom = w
ballrect = ballrect.move(speed[0], speed[1]) # 移動小球 spead[0] 為呼叫前面串列數值
if ballrect.left < 0 or ballrect.right > width: # 碰到左右邊緣
speed[0] = - speed[0]
if ballrect.top < 0 or ballrect.bottom > height: # 碰到上下邊緣
speed[1] = - speed[1]
screen.fill(BLACK) # 填充顏色
screen.blit(ball,ballrect) # 將一個影像繪制在另一個影像上,通過RECT物件引導對壁球的繪制
pygame.display.update() # 更新表單 //= pygame.display.flip() 更新全部顯示
folock.tick(fps) # 呼叫pygame.time.Clock類中的一個方法(函式)/ 控制幀數
# 幀數(Frames),為幀生成數量的簡稱,由于口語習慣上的原因,我們通常將幀數與幀率混淆,每一幀都是靜止的圖象,快速連續地顯示幀便形成了運動的假象,
# 因此高的幀率可以得到更流暢、更逼真的影片,
# 幀數為1秒鐘畫面重繪的次數
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/290394.html
標籤:其他
