1 “敵人”汽車類的創建
在創建玩家汽車類之后,接下來創建“敵人”汽車類。“敵人”汽車類與玩家類一樣,也是包含兩個方法,一個是__init__(),另一個是move()。
1.1 __init__()方法
“敵人”汽車類的__init__()方法代碼如圖1所示。
圖1 “敵人”汽車類的__init__()方法代碼
其中,“敵人”汽車類名是Enemy,該類也是pygame.sprite.Sprite類的子類。在__init__()方法中,第37行代碼調用了其父類也就是pygame.sprite.Sprite類的__init__()方法,完成精靈類的初始化;第38行代碼導入“敵人”汽車的圖片;第39行代碼獲取“敵人”汽車圖片的位置及大小信息;第40行代碼設置“敵人”汽車的初始位置,因為其初始位置在屏幕的最上方,所以其縱坐標的值是0,橫坐標是一個隨機值,可以保證“敵人”汽車出現的隨機性,原理如圖2所示。
圖2 “敵人”汽車的初始位置原理圖
其中,汽車圖片寬度的一半是40,因此其中心位置的橫坐標最小值是40,最大值是屏幕寬度-40。第40行代碼中使用random.randint()函數生成從40到WIDTH-40之間的一個隨機值作為汽車圖片中心位置的橫坐標。
注意1 需要導入random模塊。
1.2 move()方法
“敵人”汽車類的move()方法用于控制“敵人”汽車的移動,代碼如圖3所示。
圖3 “敵人”汽車類的move()方法代碼
其中,第43行代碼將變量SCORE聲明為全局變量,SCORE表示玩家的分數,當玩家成功躲避了一輛敵人的汽車,則分數加1,該變量在“敵人”汽車類之外定義,因為要在類內對其進行修改,需要將其設置為global;第44行代碼通過rect.move_ip()函數實現“敵人”汽車圖片的移動,因為“敵人”汽車是從屏幕上方向下方移動,只需要在垂直方向移動圖片,水平方向無需移動,SPEED表示“敵人”汽車的速度,在“敵人”汽車類之外定義;第45-48行代碼的作用是當“敵人”汽車移動到屏幕下方之后的處理,當rect.bottom大于HEIGHT,表示“敵人”汽車移動到屏幕下方,此時表示玩家成功躲避了一輛敵人的汽車,第46行代碼將玩家分數加1,第47-48行代碼重新設置“敵人”汽車的位置,使其重新回到屏幕的上方,并隨機設置其水平位置。