如图,init(self,ai_game) 中的ai_game如何做到指向类实例的引用。
__init__在类被实例化时调用
实例化时将对应类传入即可
ship = Ship(ai_game)
此处ai_game会在隐藏的self之后作为参数被传入并被__init__处理
有帮助望采纳
apple.py的代码
import pygame
import sys
from face import Face
from ship import Ship
class apple:
def init(self):
#初始化游戏
pygame.init()
#获取游戏属性
self.face=Face()
#初始化窗口
self.screen=pygame.display.set_mode((self.face.screen_width,self.face.screen_height))
pygame.display.set_caption('HELLO')
#获取ship中的属性
self.ship=Ship(self)
def run(self):
while True:
#获取鼠标事件
self._check_events()
# 更新飞船位置
self.ship.update()
self._update_screen()
def _check_events(self):
for event in pygame.event.get():
# 关闭窗户事件
if event.type == pygame.QUIT:
sys.exit()
elif event.type==pygame.KEYDOWN:
if event.key==pygame.K_RIGHT:
self.ship.moving_right=True
elif event.key==pygame.K_LEFT:
self.ship.moving_left=True
elif event.type==pygame.KEYUP:
if event.key==pygame.K_RIGHT:
self.ship.moving_right=False
elif event.key==pygame.K_LEFT:
self.ship.moving_left=False
def _update_screen(self):
#更新屏幕内容
# 设置屏幕背景颜色
self.screen.fill(self.face.bg_color)
# 绘制飞船
self.ship.blitme()
# 更新屏幕
pygame.display.flip()
if name=='main':
#运行程序
ai=apple()
ai.run()
ship.py的代码
import pygame
class Ship:
def init(self,car):
#初始游戏屏幕这里的car的意义是什么?
self.screen=car.screen
self.screen_rect=car.screen.get_rect()
#加载图片
self.image=pygame.image.load('ship.bmp')
self.rect=self.image.get_rect()
self.moving_right=False
self.moving_left=False
#将飞船居中
self.rect.midbottom=self.screen_rect.midbottom
def update(self):
if self.moving_right:
self.rect.x += 1
if self.moving_left:
self.rect.x -= 1
def blitme(self):
#绘制飞船
self.screen.blit(self.image,self.rect)
face.py的代码
class Face:
def init(self):
#设置屏幕属性
self.screen_width=600
self.screen_height=600
self.bg_color=(230,230,230)
代码的效果是一架飞机可以左右移动。