def __init__(self, spriteGroup, hp, moveSpeed, x, y, img, bulletImg): self.spriteGroup = spriteGroup self.screenSize = pygame.display.get_surface().get_size() #self.hp = hp # 적의 체력 self.moveSpeed = moveSpeed # 적의 이동 속도 self.lastTime = 0.00 self.shootAngle = 0.0 self.shootAngleRate = 0.0 self.shootSpeed = 10.0 self.shootSpeedRate = 0.0 self.colliderRange = 25.0 self.shootInterval = 0.1 # N초마다 총알 쏘기 self.sceneManager = sceneManager.SceneManager() self.gameLevel = self.sceneManager.gameLevel self.hp = self.sceneManager.gameLevel # 적의 체력 self.player = self.sceneManager.getPlayer() self.bulletImg = bulletImg self.onEnemyDead = None Mixer.init() self.destroySound = Mixer.Sound('assets/sounds/destroy.mp3') super().__init__(x, y, img) spriteGroup.add(self)
def __init__(self, screen): print("********** Init TitleScene **********") self.screenX, self.screenY = pygame.display.get_surface().get_size() self.allSprites = pygame.sprite.Group() #allSprites 객체 생성 self.prevTime = pygame.time.get_ticks() self.elapsedTime = 0.0 self.bg = Object(self.screenX / 2, self.screenY / 2, 'assets/images/titleSceneBg.png') self.titleImage = Object(self.screenX / 2, 190, 'assets/images/title.png') self.allSprites.add(self.bg) self.allSprites.add(self.titleImage) self.sceneManager = sceneManager.SceneManager() self.screen = screen self.buttonImage1 = "assets/images/buttonPlay.png" self.buttonImage2 = "assets/images/buttonOptions.png" self.buttonImage3 = "assets/images/buttonQuit.png" self.menu = ["Play", "HowToPlay", "Quit"] for i in range(3): if i == 0: self.menu[i] = (Object(0, 0, self.buttonImage1)) elif i == 1: self.menu[i] = (Object(0, 0, self.buttonImage2)) else: self.menu[i] = (Object(0, 0, self.buttonImage3)) self.menu[i].x = 0.5 * self.screenX self.menu[i].y = 0.55 * self.screenY + i * 110 self.menu[i].update() Mixer.init() Mixer.music.load("assets/sounds/title.mp3") Mixer.music.play()
def __init__(self, x, y, spriteGroup, player, use=True): super().__init__(x, y, "assets/images/item.png") self.spriteGroup = spriteGroup self.sceneManager = sceneManager.SceneManager() self.player = player self.use = use self.speed = 8 self.angle = rnd.randrange(2, 8, 2) self.xMove = (self.speed / (self.angle + 1)) self.yMove = (self.speed - (self.speed / (self.angle + 1))) self.spriteGroup.add(self)
def __init__(self, screen): print("********** Init GameOverScene **********") self.img = 'assets/images/gameOverScene.png' self.image = pygame.transform.scale(pygame.image.load(self.img), (480, 800)) self.screen = screen self.rect = self.image.get_rect() self.x = self.image.get_width() self.y = self.image.get_height() self.sceneManager = sceneManager.SceneManager() Mixer.init() Mixer.music.load("assets/sounds/title.mp3") # sound 변경 예정 Mixer.music.play()
def __init__(self, spriteGroup, x, y, angle, angleRate, speed, speedRate, bulletImg): self.spriteGroup = spriteGroup self.angle = angle # 총알이 나아가는 각도 self.angleRate = angleRate # 프레임당 각도 변화율 self.speed = speed # 총알이 나아가는 속도 self.speedRate = speedRate # 프레임당 속도 변화율 self.screenSize = pygame.display.get_surface().get_size() self.sceneManager = sceneManager.SceneManager() self.player = self.sceneManager.getPlayer() super().__init__(x, y, bulletImg) # 총알 회전도에 따라서 image 회전 imageAngle = self.angle if imageAngle < 0.0: imageAngle += 360.0 self.image = pygame.transform.rotate(self.image, (360 - imageAngle) + 90)
def __init__(self, screen, gameLevel=1): print("********** Init StageThreeScene **********") self.allSprites = pygame.sprite.Group() #allSprites 객체 생성 self.now = "stageThree" self.screen = screen self.screenX, self.screenY = pygame.display.get_surface().get_size() self.enemyList = [] self.stageStartTime = pygame.time.get_ticks() # 스테이지 시작 시간 self.nextEnemyGenTime = 1.0 self.gameClear = Object(self.screenX / 2, self.screenY / 2, "assets/images/gameClear.png") self.stageClearYn = False self.gameLevel = gameLevel self.sceneManager = sceneManager.SceneManager() self.enemyGenInfoList = [] self.lastTime = 1600.0 self.initializeEnemyGenInfoList() self.initializeBackground() self.initializeBGM() self.initializePlayer() self.initializeItem()
def __init__(self, screen): print("********** Init OptionsScene **********") self.img = 'assets/images/buttonOptions.png' self.image = pygame.transform.scale(pygame.image.load(self.img), (480, 200)) self.rect = self.image.get_rect() self.x = self.image.get_width() self.y = self.image.get_height() self.screen = screen self.player = None self.screenX, self.screenY = pygame.display.get_surface().get_size() self.sceneManager = sceneManager.SceneManager() self.buttonImage1 = "assets/images/buttonOptionsEasy.png" self.buttonImage2 = "assets/images/buttonOptionsNormal.png" self.buttonImage3 = "assets/images/buttonOptionsHard.png" self.buttonImage4 = "assets/images/buttonQuit.png" self.selectOptionImage = "assets/images/bullet01.png" self.menu = ["Easy", "Normal", "Hard", "Quit"] self.selectOption = (Object(0, 0, self.selectOptionImage)) for i in range(4): if i == 0: self.menu[i] = (Object(0, 0, self.buttonImage1)) elif i == 1: self.menu[i] = (Object(0, 0, self.buttonImage2)) elif i == 2: self.menu[i] = (Object(0, 0, self.buttonImage3)) else: self.menu[i] = (Object(0, 0, self.buttonImage4)) self.menu[i].x = 0.5 * self.screenX self.menu[i].y = 0.55 * self.screenY + i * 110 self.menu[i].update() Mixer.init() Mixer.music.load("assets/sounds/title.mp3") Mixer.music.play()
def __init__(self, screen, spriteGroup): super().__init__(screen.get_width() / 2, screen.get_height() / 2 + 200, "assets/images/player.png") self.spriteGroup = spriteGroup self.screen = screen self.sceneManager = sceneManager.SceneManager() self.screenX, self.screenY = pygame.display.get_surface().get_size() self.speed = 5 self.lastTime = 0.00 self.shootInterval = 0.1 self.hp = 5 self.playerHpBarList = [] self.leftBullet = False self.rightBullet = False for i in range(self.hp): self.playerHpBarList.append(PlayerHpBar(i * 30 + 30, 770)) self.spriteGroup.add(self.playerHpBarList[i]) spriteGroup.add(self) Mixer.init() self.gunSound = Mixer.Sound('assets/sounds/gun.mp3')
size = [480, 800] screen = pygame.display.set_mode(size) clock = pygame.time.Clock() pygame.display.set_caption("Space Shooter") isRun = True isPlay = False # 프로세스의 현재 경로를 루트로 변경함. path = os.path.join(os.path.dirname(__file__), "../") os.chdir(path) allSprites = pygame.sprite.Group() #allSprites 객체 생성 titleScene = titleScene.TitleScene(screen) #타이틀 화면 생성 sceneManager = sceneManager.SceneManager() #sceneManager 생성 sceneManager.setScene(titleScene) #시작화면을 titleScene 화면으로 고정 while isRun: clock.tick(60) mouse = pygame.mouse.get_pos() key = pygame.key.get_pressed() for event in pygame.event.get(): if event.type == pygame.QUIT: isRun = False sceneManager.update() sceneManager.render()
def __init__(self, x, y): super().__init__(x, y, "assets/images/player_bullet.png") self.speed = 10 self.screenSize = pygame.display.get_surface().get_size() self.sceneManager = sceneManager.SceneManager()
def __init__(self, screen, gameLevel=1): print("********** Init StageOneScene **********") self.allSprites = pygame.sprite.Group() #allSprites 객체 생성 self.now = "stageOne" self.screen = screen self.screenX, self.screenY = pygame.display.get_surface().get_size() self.enemyList = [] self.stageStartTime = pygame.time.get_ticks() # 스테이지 시작 시간 self.gameClear = Object(self.screenX / 2, self.screenY / 2, "assets/images/gameClear.png") self.stageClearYn = False self.gameLevel = gameLevel self.sceneManager = sceneManager.SceneManager() self.lastTime = 1600.0 # 일반 적이 출현하는 정보를 적어놓는 리스트 # Tuple 값 해석 # 튜플 요소 0번째: 적이 출현하는 시간대 (초 단위) # 튜플 요소 1번째: 적의 Type (0: 일반 적, 1: 보스) # 튜플 요소 2번째: 적이 출현하는 x 좌표 # 튜플 요소 3번째: 적이 출현하는 y 좌표 self.enemyGenInfoList = [ (1.0, 0, random.randrange(50.0, self.screenX - 50.0), -15.0), (1.0, 0, random.randrange(50.0, self.screenX - 50.0), -15.0), (5.0, 0, random.randrange(50.0, self.screenX - 50.0), -15.0), (8.0, 0, random.randrange(50.0, self.screenX - 50.0), -15.0), (9.0, 0, random.randrange(50.0, self.screenX - 50.0), -15.0), (9.0, 0, random.randrange(50.0, self.screenX - 50.0), -15.0), (12.0, 0, random.randrange(50.0, self.screenX - 50.0), -15.0), (14.0, 0, random.randrange(50.0, self.screenX - 50.0), -15.0), (15.0, 0, random.randrange(50.0, self.screenX - 50.0), -15.0), (15.0, 0, random.randrange(50.0, self.screenX - 50.0), -15.0), (17.0, 0, random.randrange(50.0, self.screenX - 50.0), -15.0), (18.5, 0, random.randrange(50.0, self.screenX - 50.0), -15.0), (20.0, 0, random.randrange(50.0, self.screenX - 50.0), -15.0), (22.0, 0, random.randrange(50.0, self.screenX - 50.0), -15.0), (22.0, 0, random.randrange(50.0, self.screenX - 50.0), -15.0), (23.0, 0, random.randrange(50.0, self.screenX - 50.0), -15.0), (28.0, 0, random.randrange(50.0, self.screenX - 50.0), -15.0), (31.0, 0, random.randrange(50.0, self.screenX - 50.0), -15.0), (32.0, 0, random.randrange(50.0, self.screenX - 50.0), -15.0), (32.0, 0, random.randrange(50.0, self.screenX - 50.0), -15.0), (35.0, 0, random.randrange(50.0, self.screenX - 50.0), -15.0), (37.0, 0, random.randrange(50.0, self.screenX - 50.0), -15.0), (38.0, 0, random.randrange(50.0, self.screenX - 50.0), -15.0), (38.0, 0, random.randrange(50.0, self.screenX - 50.0), -15.0), (40.0, 0, random.randrange(50.0, self.screenX - 50.0), -15.0), (41.5, 0, random.randrange(50.0, self.screenX - 50.0), -15.0), (43.0, 0, random.randrange(50.0, self.screenX - 50.0), -15.0), (45.0, 0, random.randrange(50.0, self.screenX - 50.0), -15.0), (45.0, 0, random.randrange(50.0, self.screenX - 50.0), -15.0), (46.0, 0, random.randrange(50.0, self.screenX - 50.0), -15.0), (49.0, 0, random.randrange(50.0, self.screenX - 50.0), -15.0), (50.0, 0, random.randrange(50.0, self.screenX - 50.0), -15.0), (50.0, 0, random.randrange(50.0, self.screenX - 50.0), -15.0), (52.0, 0, random.randrange(50.0, self.screenX - 50.0), -15.0), (55.0, 0, random.randrange(50.0, self.screenX - 50.0), -15.0), (56.0, 0, random.randrange(50.0, self.screenX - 50.0), -15.0), (56.0, 1, self.screenX / 2.0, -15.0), ] self.initializeBackground() self.initializeBGM() self.initializePlayer() self.initializeItem()