class Wall: #------------------------------------------------------------------------------------------------------- def __init__( self ): self.bg_one = Texture( "wall/14.png" ) self.bg_two = Texture( "wall/14.png" ) #------------------------------------------------------------------------------------------------------- def load( self ): self.bg_two.setX( self.bg_two.getWidth() ) #------------------------------------------------------------------------------------------------------- def draw( self, window, move = True, vel = 2 ): if self.bg_one.getAlpha() == 255 and move: self.bg_one.setX( self.bg_one.getLeft() - vel ) self.bg_two.setX( self.bg_two.getLeft() - vel ) if self.bg_one.getLeft() <= -self.bg_one.getWidth(): self.bg_one.setX( self.bg_one.getWidth() ) elif self.bg_two.getLeft() <= -self.bg_two.getWidth(): self.bg_two.setX( self.bg_two.getWidth() ) self.bg_one.draw( window ) self.bg_two.draw( window ) #------------------------------------------------------------------------------------------------------- def getAlpha( self ): return self.bg_two.getAlpha() #------------------------------------------------------------------------------------------------------- def fadein( self, i = 1, m = 255 ): self.bg_one.fadein( i, m ) self.bg_two.fadein( i, m ) #------------------------------------------------------------------------------------------------------- def fadeout( self, i = 1, m = 0 ): self.bg_one.fadeout( i, m ) self.bg_two.fadeout( i, m )
class Menu_title: #------------------------------------------------------------------------------------------------------- def __init__( self ): self.texture = Texture( "menu/belt.png" ) self.text = Text( "menu/KGHAPPY.ttf", 80 ) #------------------------------------------------------------------------------------------------------- def load( self, width ): self.texture.setX( ( width / 2 ) - ( self.texture.getWidth() / 2 ) ) self.texture.setY( 10 ) self.text.createText( "Ninja", [ 0x7F, 0x99, 0x95 ] ) self.text.setX( ( width / 2 ) - ( self.text.getWidth() / 2 ) ) self.text.setY( 0 ) #------------------------------------------------------------------------------------------------------- def draw( self, window ): self.texture.draw( window ) self.text.draw( window ) #------------------------------------------------------------------------------------------------------- def getBot( self ): return self.texture.getBot() #------------------------------------------------------------------------------------------------------- def fadein( self, i = 1, m = 255 ): self.texture.fadein( i, m ) self.text.fadein( i, m ) #------------------------------------------------------------------------------------------------------- def fadeout( self, i = 1, m = 0 ): self.texture.fadeout( i, m ) self.text.fadeout( i, m )
class Engine: #------------------------------------------------------------------------------------------------------- def __init__( self ): self.core = Core( 60, 1024, 768, "Ninja" ) self.intro = Intro() self.menu_background = Texture( "menu/background.png" ) self.menu_title = Menu_title() self.menu_play_button = Menu_play_button() self.menu_git_button = Menu_link_button( "menu/git.png", "https://github.com/Adriqun" ) self.menu_google_button = Menu_link_button( "menu/google.png", "https://en.wikipedia.org/wiki/Ninja" ) self.menu_facebook_button = Menu_link_button( "menu/facebook.png", "nothing", True ) self.menu_twitter_button = Menu_link_button( "menu/twitter.png", "nothing", True ) self.menu_music_button = Menu_music_button( "menu/music.png" ) self.menu_chunk_button = Menu_music_button( "menu/chunk.png", 1 ) self.menu_exit_log = Menu_exit_log() self.menu_author_log = Menu_author_log() self.menu_game_log = Menu_link_button( "menu/game.png", "nothing", True ) self.menu_settings_log = Menu_link_button( "menu/settings.png", "nothing", True ) self.menu_score_log = Menu_score_log() self.menu_music = Menu_music( "menu/Rayman Legends OST - Moving Ground.mp3" ) self.wall = Wall() self.hero = Hero() self.menu_log = Menu_log() self.map = Map() #------------------------------------------------------------------------------------------------------- def load( self ): self.core.setState( -1 ) self.intro.load( self.core.getWidth(), self.core.getHeight() ) self.menu_title.load( self.core.getWidth() ) self.menu_play_button.load( self.core.getWidth(), self.core.getHeight() ) self.menu_git_button.load( self.core.getWidth(), 10 ) self.menu_google_button.load( self.core.getWidth(), self.menu_git_button.getBot() ) self.menu_facebook_button.load( self.core.getWidth(), self.menu_google_button.getBot() ) self.menu_twitter_button.load( self.core.getWidth(), self.menu_facebook_button.getBot() ) self.menu_music_button.load( 10 ) self.menu_chunk_button.load( self.menu_music_button.getBot() ) self.menu_exit_log.load( self.core.getWidth(), self.core.getHeight() ) self.menu_author_log.load( self.menu_play_button.getLeft()+5, self.core.getWidth(), self.menu_title.getBot() +150, self.menu_play_button.getBot() ) self.menu_game_log.load( self.menu_author_log.getRight(), self.menu_play_button.getBot() +10, True ) self.menu_settings_log.load( self.menu_game_log.getRight(), self.menu_play_button.getBot() +10, True ) self.menu_score_log.load( self.menu_settings_log.getRight(), self.core.getWidth(), self.menu_title.getBot() +150, self.menu_play_button.getBot() ) self.wall.load() self.hero.load( self.core.getWidth(), self.core.getHeight() ) self.menu_log.load( self.core.getWidth(), self.core.getHeight() ) self.map.load() #------------------------------------------------------------------------------------------------------- def handle( self ): for event in pygame.event.get(): if event.type == pygame.QUIT: self.core.setQuit() #------------------------------------------------------------------------------------------------------- if self.core.getState() == 0: if self.menu_play_button.getState() == 0: self.menu_exit_log.handle( event ) #HANDLE IF AUTHOR BUTTON == OFF AND SCORE BUTTON == OFF if self.menu_author_log.getState() == 0 and self.menu_score_log.getState() == 0: self.menu_play_button.handle( event ) self.menu_git_button.handle( event ) self.menu_google_button.handle( event ) self.menu_music_button.handle( event ) self.menu_chunk_button.handle( event ) if self.menu_score_log.getState() == 0: self.menu_author_log.handle( event ) if self.menu_author_log.getState() == 0: self.menu_score_log.handle( event ) #------------------------------------------------------------------------------------------------------- if self.core.getState() == 1: self.menu_log.handle( event ) #HANDLE IF MENU_LOG == OFF if self.menu_log.getState() == 0: self.hero.handle( event ) #------------------------------------------------------------------------------------------------------- def states( self ): #-------------------------------------------------------------------------------------------------------STATE -1 if self.core.getState() == -1: self.intro.draw( self.core.getWindow() ) if self.intro.getQuit(): self.intro.free() del self.intro self.menu_music.play()#MENU MUSIC self.core.setState( 0 ) #-------------------------------------------------------------------------------------------------------STATE 0 if self.core.getState() == 0: #FADE IN if self.menu_play_button.getState() != 1 and self.menu_exit_log.getState() == 0: self.menu_background.fadein( 5 ) self.menu_title.fadein( 5 ) self.menu_play_button.fadein( 5 ) self.menu_git_button.fadein( 5 ) self.menu_google_button.fadein( 5 ) self.menu_facebook_button.fadein( 5 ) self.menu_twitter_button.fadein( 5 ) self.menu_music_button.fadein( 5 ) self.menu_chunk_button.fadein( 5 ) self.menu_author_log.fadein( 5 ) self.menu_game_log.fadein( 5 ) self.menu_settings_log.fadein( 5 ) self.menu_score_log.fadein( 5 ) self.menu_music.setVolume( 1.0 ) #DRAW ALWAYS IN MENU STATE self.menu_background.draw( self.core.getWindow() ) self.menu_title.draw( self.core.getWindow() ) self.menu_exit_log.draw( self.core.getWindow() ) #DRAW IF AUTHOR BUTTON == OFF AND SCORE BUTTON == OFF if self.menu_author_log.getState() == 0 and self.menu_score_log.getState() == 0: self.menu_git_button.draw( self.core.getWindow() ) self.menu_google_button.draw( self.core.getWindow() ) self.menu_facebook_button.draw( self.core.getWindow() ) self.menu_twitter_button.draw( self.core.getWindow() ) self.menu_play_button.draw( self.core.getWindow() ) self.menu_music_button.draw( self.core.getWindow() ) self.menu_chunk_button.draw( self.core.getWindow() ) self.menu_game_log.draw( self.core.getWindow() ) self.menu_settings_log.draw( self.core.getWindow() ) if self.menu_score_log.getState() == 0: self.menu_author_log.draw( self.core.getWindow() ) if self.menu_author_log.getState() == 0: self.menu_score_log.draw( self.core.getWindow() ) #IF USER TURN ON/OFF CHUNKS if self.menu_chunk_button.getState(): self.menu_play_button.setState() self.menu_git_button.setState() self.menu_google_button.setState() self.menu_music_button.setState() self.menu_chunk_button.setState() self.menu_author_log.setState() self.menu_score_log.setState() #IF USER TURN ON/OFF MUSIC if self.menu_music_button.getState(): self.menu_music.pause() #IF USER PRESS Q - EXIT if self.menu_exit_log.getState() == 1: self.menu_background.fadeout( 6, 120 ) self.menu_title.fadeout( 6, 120 ) self.menu_play_button.fadeout( 6, 120 ) self.menu_git_button.fadeout( 6, 120 ) self.menu_google_button.fadeout( 6, 120 ) self.menu_facebook_button.fadeout( 6, 120 ) self.menu_twitter_button.fadeout( 6, 120 ) self.menu_music_button.fadeout( 6, 120 ) self.menu_chunk_button.fadeout( 6, 120 ) self.menu_author_log.fadeout( 6, 120 ) self.menu_game_log.fadeout( 6, 120 ) self.menu_settings_log.fadeout( 6, 120 ) self.menu_score_log.fadeout( 6, 120 ) self.menu_music.setVolume( 0.3 ) elif self.menu_exit_log.getState() == 2: self.menu_background.fadeout( 6 ) self.menu_title.fadeout( 6 ) self.menu_play_button.fadeout( 6 ) self.menu_git_button.fadeout( 6 ) self.menu_google_button.fadeout( 6 ) self.menu_facebook_button.fadeout( 6 ) self.menu_twitter_button.fadeout( 6 ) self.menu_music_button.fadeout( 6 ) self.menu_chunk_button.fadeout( 6 ) self.menu_author_log.fadeout( 6 ) self.menu_game_log.fadeout( 6 ) self.menu_settings_log.fadeout( 6 ) self.menu_score_log.fadeout( 6 ) if self.menu_exit_log.getState() == 2 and self.menu_background.getAlpha() == 0: self.core.setQuit() #IF USER CLICK PLAY BUTTON if self.menu_play_button.getState() == 1: self.menu_background.fadeout( 6 ) self.menu_title.fadeout( 6 ) self.menu_play_button.fadeout( 6 ) self.menu_git_button.fadeout( 6 ) self.menu_google_button.fadeout( 6 ) self.menu_facebook_button.fadeout( 6 ) self.menu_twitter_button.fadeout( 6 ) self.menu_music_button.fadeout( 6 ) self.menu_chunk_button.fadeout( 6 ) self.menu_author_log.fadeout( 6 ) self.menu_game_log.fadeout( 6 ) self.menu_settings_log.fadeout( 6 ) self.menu_score_log.fadeout( 6 ) if self.menu_music.isPaused() == False: self.menu_music.fadeOut() if self.menu_play_button.getAlpha() == 0: self.menu_play_button.setNext( 0 ) self.core.setState( 1 ) #-------------------------------------------------------------------------------------------------------STATE 1 if self.core.getState() == 1: #FADE IN IF PAUSE BUTTON == OFF AND MENU_LOG == OFF if self.menu_log.getState() == 0: self.wall.fadein( 5 ) self.hero.fadein( 5 ) self.map.fadein( 5 ) elif self.menu_log.getState() == 1: self.wall.fadeout( 6, 130 ) self.hero.fadeout( 6, 130 ) self.map.fadeout( 6, 130 ) elif self.menu_log.getState() == 2: self.wall.fadeout( 6 ) self.hero.fadeout( 6 ) self.map.fadeout( 6 ) if self.wall.getAlpha() == 0: self.menu_log.setState( 0 ) if self.menu_music.isPaused() == False: self.menu_music.play() self.core.setState( 0 ) #Back to menu #DRAW self.wall.draw( self.core.getWindow() ) self.hero.draw( self.core.getWindow() ) self.menu_log.draw( self.core.getWindow() ) self.map.draw( self.core.getWindow() ) def loop( self ): while not self.core.isQuit(): self.handle() self.core.fillDisplay() self.states() self.core.tickClock() pygame.display.update() def quit( self ): pygame.quit()
class Intro: #------------------------------------------------------------------------------------------------------- def __init__( self ): self.counter = 0 self.quit = False #Textures self.preview = Text( "intro/Jaapokki-Regular.otf", 37 ) self.shuriken = Texture( "intro/shuriken.png" ) self.title = Text( "intro/Jaapokki-Regular.otf", 37 ) self.author = Text( "intro/Jaapokki-Regular.otf", 37 ) self.produced = Text( "intro/Jaapokki-Regular.otf", 37 ) self.text_one = Text( "intro/Jaapokki-Regular.otf", 37 ) self.text_two = Text( "intro/Jaapokki-Regular.otf", 37 ) self.text_three = Text( "intro/Jaapokki-Regular.otf", 37 ) self.text_four = Text( "intro/Jaapokki-Regular.otf", 37 ) #------------------------------------------------------------------------------------------------------- def load( self, width, height ): self.preview.createText( "When nothing makes sense...", [ 0xFF, 0xFF, 0xFF ] ) self.preview.setX( width/2 - self.preview.getWidth()/2 ) self.preview.setY( height/2 - self.preview.getHeight()/2 ) self.title.createText( "Ninja", [ 0x70, 0xB7, 0x59 ] ) self.title.setX( width/2 - self.title.getWidth()/2 - self.shuriken.getWidth() -10 ) self.title.setY( height/2 - self.title.getHeight()/2 ) self.shuriken.setX( self.title.getRight() +10 ) self.shuriken.setY( height/2 - self.shuriken.getHeight()/2 ) self.author.createText( "Adrian Michalek", [ 0xFF, 0xFF, 0xFF ] ) self.author.setX( width/2 - self.author.getWidth()/2 ) self.author.setY( height/2 - self.author.getHeight()/2 ) self.produced.createText( "produced by", [ 0x70, 0xB7, 0x59 ] ) self.produced.setX( width/2 - self.produced.getWidth()/2 ) self.produced.setY( height/2 - self.produced.getHeight()/2 - self.author.getHeight() -10 ) self.text_one.createText( "It's not a final version.", [ 0xFF, 0xFF, 0xFF ] ) self.text_one.setX( width/2 - self.text_one.getWidth()/2 ) self.text_one.setY( height/2 - self.text_one.getHeight()-20 ) self.text_two.createText( "You can develop game by your own.", [ 0xFF, 0xFF, 0xFF ] ) self.text_two.setX( width/2 - self.text_two.getWidth()/2 ) self.text_two.setY( height/2 - self.text_two.getHeight()/2-10 ) self.text_three.createText( "It's a open source code build with pygame library.", [ 0xFF, 0xFF, 0xFF ] ) self.text_three.setX( width/2 - self.text_three.getWidth()/2 ) self.text_three.setY( height/2 ) self.text_four.createText( "Have a nice time!", [ 0x70, 0xB7, 0x59 ] ) self.text_four.setX( width/2 - self.text_four.getWidth()/2 ) self.text_four.setY( height/2 + self.text_four.getHeight()/2 +10 ) #------------------------------------------------------------------------------------------------------- def free( self ): #DELETE ALL del self.counter del self.quit self.preview.free() del self.preview self.shuriken.free() del self.shuriken self.title.free() del self.title self.author.free() del self.author self.produced.free() del self.produced self.text_one.free() del self.text_one self.text_two.free() del self.text_two self.text_three.free() del self.text_three self.text_four.free() del self.text_four #------------------------------------------------------------------------------------------------------- def draw( self, screen ): self.preview.fadein( 3 ) if self.preview.getAlpha() < 255: self.preview.draw( screen ) else: self.title.fadein( 3 ) self.shuriken.fadein( 3 ) if self.title.getAlpha() < 255: self.title.draw( screen ) self.shuriken.draw( screen ) else: self.author.fadein( 3 ) self.produced.fadein( 3 ) if self.author.getAlpha() < 255: self.author.draw( screen ) self.produced.draw( screen ) else: self.counter += 1 self.text_one.fadein( 3 ) self.text_two.fadein( 3 ) self.text_three.fadein( 3 ) self.text_four.fadein( 3 ) if self.counter < 500: self.text_one.draw( screen ) self.text_two.draw( screen ) self.text_three.draw( screen ) self.text_four.draw( screen ) else: self.quit = True #------------------------------------------------------------------------------------------------------- def getQuit( self ): return self.quit
class Menu_music_button: #------------------------------------------------------------------------------------------------------- def __init__( self, path, on = 0 ): self.sprite = Sprite( path, 4 ) self.scratch = Texture( "menu/scratch.png" ) self.click = pygame.mixer.Sound( "menu/click.wav" ) self.type = 0 self.state = 0 self.on = on self.mouseup = 0 #------------------------------------------------------------------------------------------------------- def load( self, y ): self.sprite.setX( 10 ) self.sprite.setY( y ) self.scratch.setX( 10 ) self.scratch.setY( y ) #------------------------------------------------------------------------------------------------------- def getBot( self ): return self.sprite.getBot() #------------------------------------------------------------------------------------------------------- def draw( self, window ): self.sprite.draw( window ) if self.type == 1: self.scratch.draw( window ) #------------------------------------------------------------------------------------------------------- def fadein( self, i = 1, m = 255 ): self.sprite.fadein( i, m ) self.scratch.fadein( i, m ) #------------------------------------------------------------------------------------------------------- def fadeout( self, i = 1, m = 0 ): self.sprite.fadeout( i, m ) self.scratch.fadeout( i, m ) #------------------------------------------------------------------------------------------------------- def getState( self ): if self.state != self.type: self.state = self.type #print "true!" return True return False #------------------------------------------------------------------------------------------------------- def setState( self ): if self.on == 0: self.on = 1 else: self.on = 0 # print self.on #------------------------------------------------------------------------------------------------------- def handle( self, event ): self.focus = False self.sprite.setOffset( 0 ) if event.type == pygame.MOUSEBUTTONDOWN: self.focus = True self.mouseup = 1 elif event.type == pygame.MOUSEBUTTONUP: self.mouseup = 0 self.x, self.y = pygame.mouse.get_pos() if self.x > self.sprite.getLeft() and self.x < self.sprite.getRight() and self.sprite.getAlpha() == 255: if self.y > self.sprite.getTop() and self.y < self.sprite.getBot(): if self.focus == True: if self.on == 0: self.click.play() if self.type == 0: self.type = 1 else: self.type = 0 if self.focus == True or self.mouseup == 1: self.sprite.setOffset( 2 ) else: self.sprite.setOffset( 1 )
class Menu_score_log: #------------------------------------------------------------------------------------------------------- def __init__( self ): self.sprite = Sprite( "menu/position.png", 4 ) self.window = Texture( "menu/window.png" ) self.click = pygame.mixer.Sound( "menu/click.wav" ) self.on = 0 self.type = 0 self.text = Text( "menu/KGHAPPY.ttf", 30 ) #------------------------------------------------------------------------------------------------------- def load( self, x, width, titlebot, bot ): self.sprite.setX( x ) self.sprite.setY( bot +10 ) self.window.setX( width/2 - self.window.getWidth()/2 ) self.window.setY( titlebot -20 ) self.text.createText( "SCORES", [ 0xd5, 0xad, 0x51 ] ) self.text.setX( self.window.getLeft() + self.window.getWidth()/2 - self.text.getWidth()/2 ) self.text.setY( self.window.getTop() +50 ) #------------------------------------------------------------------------------------------------------- def draw( self, screen ): if self.type == 1: self.window.draw( screen ) self.text.draw( screen ) else: self.sprite.draw( screen ) #------------------------------------------------------------------------------------------------------- def fadein( self, i = 1, m = 255 ): self.sprite.fadein( i, m ) self.window.fadein( i, m ) self.text.fadein( i, m ) #------------------------------------------------------------------------------------------------------- def fadeout( self, i = 1, m = 0 ): self.sprite.fadeout( i, m ) self.window.fadeout( i, m ) self.text.fadeout( i, m ) #------------------------------------------------------------------------------------------------------- def getState( self ): return self.type #------------------------------------------------------------------------------------------------------- def getRight( self ): return self.sprite.getRight() #------------------------------------------------------------------------------------------------------- def setState( self ): if self.on == 0: self.on = 1 else: self.on = 0 #------------------------------------------------------------------------------------------------------- def handle( self, event ): self.focus = False if event.type == pygame.MOUSEBUTTONDOWN: self.focus = True if self.type == 0: self.sprite.setOffset( 0 ) self.x, self.y = pygame.mouse.get_pos() if self.x > self.sprite.getLeft() and self.x < self.sprite.getRight() and self.sprite.getAlpha() == 255: if self.y > self.sprite.getTop() and self.y < self.sprite.getBot(): if self.focus == True: if self.on == 0: self.click.play() self.sprite.setOffset( 2 ) if self.type == 0: self.type = 1 else: self.sprite.setOffset( 1 ) if event.type == pygame.KEYDOWN: if event.key == pygame.K_ESCAPE or event.key == pygame.K_SPACE: if self.type == 1: if self.on == 0: self.click.play() self.type = 0