Esempio n. 1
0
    def __init__(self, breadth, status):
        if not status._level % 3:
            IDENTIFIER['board'] = '\033[1;96m~\033[22;39m'
        else:
            IDENTIFIER['board'] = ' '
        self.board = Board(LENGTH, breadth, status)
        self.status = status
        self.offset = 0
        self.breadth = breadth

        # Generate random background
        if status._level % 3:
            for _ in range(randint(breadth // 20, breadth // 16)):
                _ = Cloud(self.board)
        for _ in range(randint(breadth // 15, breadth // 10)):
            _ = Bush(self.board)
        self.display()

        self.generate_hurdles()
        self.display()

        self.mario = Mario(FLOOR - 3, 3, self.board)
        self.display()
        while True:
            self.scheduler()
Esempio n. 2
0
def run_game():
    # 初始化游戏并创建一个屏幕对象
    pygame.init()
    ai_settings = Settings()
    screen = pygame.display.set_mode(
        (ai_settings.screen_width, ai_settings.screen_height))
    pygame.display.set_caption("Super Mario")

    # 创建马里奥
    mario = Mario(screen, ai_settings)

    # 创建一个用于存储游戏统计信息的实例
    status = GameStatus(ai_settings)

    # 创建一个蘑菇
    mushroom = Mushroom(screen, ai_settings, status)

    # 开始游戏的主循环
    while True:
        # 监视键盘和鼠标事件

        gf.check_events(mario)
        if status.game_active:
            mario.update()
            gf.check_mario_mushroom_collisions(mario, mushroom)
            mushroom.update(status)
        gf.update_screen(ai_settings, screen, mario, mushroom)
Esempio n. 3
0
def returnMap(posx, posy, mappos, direction, length, height):
    grnd = Ground(length, height)
    grnd.renderGround(mappos)
    mrio = Mario(posx, posy)

    if mappos >= 2:
        mapMatrix = renderBlocks(grnd.length - (mappos - 2), 7, grnd)
        grnd.updateMap(mapMatrix)
    mapMatrix = mrio.renderMario(grnd, direction)
    return mapMatrix
def test_killing_enemy():
	BOARD = Board()
	MARIO = Mario()
	GLOBALVAR = Globalvar()

	movefw(BOARD, GLOBALVAR, MARIO, 38)
	jump(BOARD, GLOBALVAR, MARIO)
	movefw(BOARD, GLOBALVAR, MARIO, 28)
	jump(BOARD, GLOBALVAR, MARIO)
	movefw(BOARD, GLOBALVAR, MARIO, 39)
	jump(BOARD, GLOBALVAR, MARIO)
	movefw(BOARD, GLOBALVAR, MARIO, 51)
	jump(BOARD, GLOBALVAR, MARIO)
	movefw(BOARD, GLOBALVAR, MARIO, 30)
	jump(BOARD, GLOBALVAR, MARIO)
	movefw(BOARD, GLOBALVAR, MARIO, 22)

	print_board(BOARD)
	print('========================================')
	print('3 Enemies exist')
	print('========================================')

	for i in range(9):
		if i%3 == 0:
			MARIO.shoot()
		BOARD.updatebg(GLOBALVAR)
		BOARD.updatebricks(GLOBALVAR)
		BOARD.updatecoins(GLOBALVAR)
		BOARD.updatepipes()
		BOARD.updatebullets(MARIO)
		BOARD.updatesprings()
		BOARD.updatemario(MARIO, GLOBALVAR, 'l')
		BOARD.updateenemy(MARIO, GLOBALVAR)

	print_board(BOARD)
	print('========================================')
	print('3 Shots fired')
	print('========================================')

	for i in range(22):
		BOARD.updatebg(GLOBALVAR)
		BOARD.updatebricks(GLOBALVAR)
		BOARD.updatecoins(GLOBALVAR)
		BOARD.updatepipes()
		BOARD.updatebullets(MARIO)
		BOARD.updatesprings()
		BOARD.updatemario(MARIO, GLOBALVAR, 'l')
		BOARD.updateenemy(MARIO, GLOBALVAR)	

	print_board(BOARD)
	print('=====================================')
	print('One enemy still alive')
	print('=====================================')
	
	assert len(BOARD.enemyarr) == 0
Esempio n. 5
0
 def __init__(self):
     pygame.display.set_caption(settings.game_title)
     self.screen = pygame.display.set_mode(
         (settings.screen_width, settings.screen_height))
     self.stats = Stats()
     self.scoreboard = Scoreboard(settings, self.screen, self.stats)
     self.enemies = []
     self.map = Map(self.screen, settings, self.enemies)
     self.mario = Mario(self.screen, settings, self.map)
     self.map.set_mario(self.mario)
     self.reset_enemies()
     self.bgm = pygame.mixer.Sound("media/sounds/bgm.wav")
Esempio n. 6
0
 def __init__(self):
     self.score = 0
     self.coins = 0
     self.lives = 3
     self.gridX = 0
     self.board = Board()
     self.mario = Mario(self)
     self.getch = getInput._getChUnix()
     self.speed = 1
     self.its = 0
     self.lefTime = 300
     self.lupd = 0
Esempio n. 7
0
def hor_decelerating_true(character: Mario):
    """
    Changes Mario's position, speed and acceleration when accelerating is true.
    """
    if 0 >= character.hor_acceleration > -1:
        character.hor_acceleration -= 0.1
    elif character.hor_acceleration > 0:
        character.hor_acceleration = -0.1

    if character.hor_acceleration < 0 and character.hor_speed > -7:
        character.hor_speed += character.hor_acceleration
    character.move_mario(character.x_cor + character.hor_speed,
                         character.y_cor)
Esempio n. 8
0
    def __init__(self):
        pygame.init()
        self.ai_settings = Settings()
        self.screen = pygame.display.set_mode((self.ai_settings.screen_width, self.ai_settings.screen_height))
        pygame.display.set_caption("Super Mario Bros.")

        self.screen_rect = self.screen.get_rect()
        self.map = Map(self.screen, 'images/world1-1.txt', 'rock_block', 'metal_block', 'stone_block', 'brick_block',
                       'question_block', 'pipe-1', 'pipe-2', 'super_coin-1', 'pole', 'flag', 'top', 'castle')
        self.mario = Mario(self.ai_settings, self.screen, self.map, self)
        self.menu = Menu(self.screen, 'Super Mario Bros', 'TOP - ', 'SCORE', 'COINS', 'TIME', self.ai_settings, self.mario)
        self.sb = Scoreboard(self.ai_settings, self.screen)
        self.load_data()
Esempio n. 9
0
def hor_accelerating_true(character: Mario):
    """
    Changes Mario's position, speed and acceleration when accelerating is true.
    """
    if 0 <= character.hor_acceleration < 1:
        character.hor_acceleration += 0.1
    elif character.hor_acceleration < 0:
        character.hor_acceleration = 0.1
    if character.hor_acceleration >= 0 and character.hor_speed < 7:
        character.hor_speed += character.hor_acceleration

    character.move_mario(character.x_cor + character.hor_speed,
                         character.y_cor)
Esempio n. 10
0
def run_game():
    '''
    运行游戏主程序
    :return:
    '''
    # background_image_filename = 'resources/images/level_1.png' #'/Users/lufan/Python_CODE_03/super_mario_level_01/resources/images/level_1.png'
    # 初始化游戏并创建一个屏幕对象
    pygame.init()
    ai_settings = Settings()

    # 创建一个窗口
    screen = pygame.display.set_mode(
        (ai_settings.screen_width, ai_settings.screen_height))
    # 设置窗口标题
    pygame.display.set_caption('Super Mario Bros')
    # 背景图片
    # background = pygame.image.load(background_image_filename).convert()

    # 放置Mario
    mario = Mario(ai_settings, screen)
    marios = Group()
    # mario_shadow = Mario_shadow(ai_settings, screen)

    # 敌人
    enemy = Enemy(ai_settings, screen)
    enemy_shadow = Enemy_shadow(ai_settings, screen)
    enemies = Group()
    '''有问题'''
    enemies.add(enemy)
    enemies.add(enemy_shadow)

    marios.add(mario)

    while True:
        #监视键盘和鼠标事件
        gf.check_events(ai_settings, screen, mario)

        # 将背景图画上去
        # screen.blit(background, (0, 577))

        centerx = mario.update()
        # print(centerx)

        # enemy.update()
        # enemy_shadow.update()
        enemies.update()

        gf.handle_state(marios, enemies)

        gf.update_screen(ai_settings, screen, mario, enemy, enemy_shadow,
                         centerx)
Esempio n. 11
0
def enter():
    global mario, map, enemy, object, fire_ball, chimney, mario_life
    global mario_life2, mario_life3, mario_life4
    global item_box, brick
    mario = Mario()
    map = Map()
    enemy = Enemy()
    object = Object()
    fire_ball = Ball()
    chimney = Chimney()
    mario_life = Mario_Life()
    mario_life2 = Mario_Life2()
    mario_life3 = Mario_Life3()
    mario_life4 = Mario_Life4()
    item_box = Object_Item()
    brick = Brick()

    game_world.add_object(map, 0)
    game_world.add_object(object, 1)
    game_world.add_object(mario, 0)
    game_world.add_object(enemy, 1)
    game_world.add_object(chimney, 0)
    game_world.add_object(mario_life, 1)
    game_world.add_object(mario_life2, 0)
    game_world.add_object(mario_life3, 1)
    game_world.add_object(mario_life4, 0)
    game_world.add_object(item_box, 1)
    game_world.add_object(brick, 0)
    pass
Esempio n. 12
0
def test_scene_movement():
    GLOBALVAR = Globalvar()
    BOARD = Board()
    MARIO = Mario()

    for i in range(5):
        BOARD.updatebg(GLOBALVAR)
        BOARD.updatebricks(GLOBALVAR)
        BOARD.updatecoins(GLOBALVAR)
        BOARD.updatepipes()
        BOARD.updatebullets(MARIO)
        BOARD.updatesprings()
        BOARD.updatemario(MARIO, GLOBALVAR, 'd')
        BOARD.updateenemy(MARIO, GLOBALVAR)

    initial_board = [0 for _ in range(30)]

    for i in range(30):
        initial_board[i] = BOARD.layout[i][:]

    print_board(BOARD)
    print('======================================')
    print('Initial postion')
    print('======================================')

    # Forward movement
    for i in range(6):
        BOARD.updatebg(GLOBALVAR)
        BOARD.updatebricks(GLOBALVAR)
        BOARD.updatecoins(GLOBALVAR)
        BOARD.updatepipes()
        BOARD.updatebullets(MARIO)
        BOARD.updatesprings()
        BOARD.updatemario(MARIO, GLOBALVAR, 'd')
        BOARD.updateenemy(MARIO, GLOBALVAR)

    print_board(BOARD)
    print('========================================')
    print('Moving 6 steps forward')
    print('========================================')

    # Backward movement
    for i in range(6):
        BOARD.updatebg(GLOBALVAR)
        BOARD.updatebricks(GLOBALVAR)
        BOARD.updatecoins(GLOBALVAR)
        BOARD.updatepipes()
        BOARD.updatebullets(MARIO)
        BOARD.updatesprings()
        BOARD.updatemario(MARIO, GLOBALVAR, 'a')
        BOARD.updateenemy(MARIO, GLOBALVAR)

    print_board(BOARD)
    print('=========================================')
    print('Moving 6 steps backward')
    print('=========================================')

    for i in range(1, 30):
        for j in range(90):
            assert initial_board[i][j] == BOARD.layout[i][j]
Esempio n. 13
0
def enter():
    global mario, map, enemy, object
    mario = Mario()
    map = Map()
    enemy = Enemy()
    object = Object()
    pass
Esempio n. 14
0
def enter():
    global mario, map, enemy, object, fire_ball, chimney, mario_life
    global mario_life2, mario_life3, mario_life4
    global item_box, brick, item, coin_box, turtle, coin, balls
    mario = Mario()
    map = Map()
    enemy = Enemy()
    object = Object()
    fire_ball = Ball()
    chimney = Chimney()
    mario_life = Mario_Life()
    mario_life2 = Mario_Life2()
    mario_life3 = Mario_Life3()
    mario_life4 = Mario_Life4()
    item_box = Object_Item()
    brick = Brick()
    item = Item()
    coin_box = Coin_Box()
    turtle = Turtle()
    coin = Coin()

    game_world.add_object(map, 0)
    game_world.add_object(object, 1)
    game_world.add_object(mario, 0)
    game_world.add_object(enemy, 1)
    #game_world.add_object(chimney, 0)
    game_world.add_object(mario_life, 1)
    game_world.add_object(mario_life2, 0)
    game_world.add_object(mario_life3, 1)
    game_world.add_object(mario_life4, 0)
    game_world.add_object(item_box, 1)
    game_world.add_object(brick, 0)
    game_world.add_object(coin_box, 1)
    #game_world.add_object(turtle, 0)
    pass
Esempio n. 15
0
def enter():

    global mario, map, enemy, object, fire_ball, chimney, mario_life
    global mario_life2, mario_life3, mario_life4
    mario = Mario()
    map = Map()
    enemy = Enemy()
    object = Object()
    fire_ball = Ball()
    chimney = Chimney()
    mario_life = Mario_Life()
    mario_life2 = Mario_Life2()
    mario_life3 = Mario_Life3()
    mario_life4 = Mario_Life4()

    game_world.add_object(map, 0)
    game_world.add_object(object, 1)
    game_world.add_object(mario, 0)
    game_world.add_object(enemy, 1)
    game_world.add_object(chimney, 0)
    game_world.add_object(mario_life, 1)
    game_world.add_object(mario_life2, 0)
    game_world.add_object(mario_life3, 1)
    game_world.add_object(mario_life4, 0)
    pass
 def play(self):
     while True:
         while self.stats.lives > 0:
             self.mario_player = Mario(self.ai_settings, self.screen)
             self.map = Map(self.ai_settings,
                            self.screen,
                            mapfile='Levels/first_level.txt',
                            blockfile='Images/block_tile.png')
             eloop = EventLoop(self.ai_settings,
                               self.screen,
                               self.mario_player,
                               self.map,
                               self.stats,
                               self.scoreboard,
                               finished=False)
             self.map.create_level()
             while not eloop.finished:
                 eloop.update_events()
                 eloop.check_input_events()
                 eloop.update_screen()
                 self.clock.tick(60)
                 print(self.clock.get_fps())
             self.stats.lives -= 1
             self.stats.score = 0
         self.stats.reset_stats()
         if self.stats.win:
             self.gameover.show_winover()
             self.stats.final_score = 0
             self.stats.win = False
         else:
             self.gameover.show_gameover()
         pygame.time.wait(3000)
Esempio n. 17
0
 def prep_marios(self):
     """Show how many marios are left."""
     self.marios = Group()
     for mario_number in range(self.stats.marios_left):
         mario = Mario(self.ai_game)
         mario.rect.x = 10 + mario_number * (mario.rect.width + 10)
         mario.rect.y = 10
         self.marios.add(mario)
def test_score_update():
	BOARD = Board()
	MARIO = Mario()
	GLOBALVAR = Globalvar()

	movefw(BOARD, GLOBALVAR, MARIO, 38)

	assert BOARD.score >= 30
Esempio n. 19
0
    def __init__(self):
        """Initialize the game, and create game resources."""
        pygame.init()

        self.settings = Settings()
        self.stats = GameStats(self)
        #self.sb = Scoreboard

        self.screen = pygame.display.set_mode(
            (self.settings.screen_width, self.settings.screen_height))

        self.mario = Mario(self)
        self.bowser = Bowser(self)
        self.iceballs = pygame.sprite.Group()
        self.fireballs = pygame.sprite.Group()

        # Make the Play button.
        self.play_button = Button(self, "Play")
Esempio n. 20
0
 def __init__(self):
     pygame.init()
     config = ConfigParser()  # parse settings file
     config.read('settings.ini')
     screen_size = (int(config['screen_settings']['width']),
                    int(config['screen_settings']['height']))
     self.screen = pygame.display.set_mode(screen_size)
     self.stats = GameStats(self.screen)
     pygame.display.set_caption(config['game_settings']['title'])
     self.clock = pygame.time.Clock()  # clock for limiting fps
     self.game_objects = None
     self.tmx_data = None
     self.map_layer = None
     self.map_group = None
     self.player_spawn = None
     self.mario = None
     self.timer = None
     self.time_warn = None
     self.last_tick = 0
     self.score = 0
     self.lives = 3
     self.coins = 0
     self.SFX = {
         '1-up': pygame.mixer.Sound('audio/1-Up.wav'),
         'warning': pygame.mixer.Sound('audio/Time-Warning.wav')
     }
     self.init_world()
     self.mario = Mario(self.game_objects, self.map_layer, self.map_group,
                        self.screen)
     self.prep_enemies()
     self.mario.rect.x, self.mario.rect.y = self.player_spawn.x, self.player_spawn.y
     self.map_layer.center(
         (self.mario.rect.x, self.mario.rect.y))  # center camera
     self.map_layer.zoom = 0.725  # camera zoom
     self.map_group.add(self.mario)  # add test sprite to map group
     self.paused = False
     # print(self.map_layer.view_rect.center)
     # action map for event loop
     self.paused = False
     self.game_active = False
     self.game_won = False
     self.menu = Menu(self.screen)
     self.action_map = {pygame.KEYDOWN: self.set_paused}
     print(self.map_layer.view_rect.center)
Esempio n. 21
0
def run_game():
    pygame.init()
    pygame.display.set_caption("Mario")
    ai_settings = Settings()
    screen = pygame.display.set_mode(
        (ai_settings.screen_width, ai_settings.screen_height))
    scores = Scoreboard(ai_settings, screen)
    music = Music()

    g_blocks = Group()
    bg_blocks = Group()
    enemies = Group()
    chunks = Group()
    items = Group()

    pygame.mixer.set_reserved(0)
    pygame.mixer.set_reserved(1)
    pygame.mixer.set_reserved(2)
    pygame.mixer.set_reserved(3)
    pygame.mixer.set_reserved(4)
    pygame.mixer.set_reserved(5)

    monitor = Monitor(ai_settings, screen, g_blocks, bg_blocks, chunks,
                      enemies, items)
    mario = Mario(ai_settings, screen, g_blocks, bg_blocks, enemies, monitor,
                  chunks, items, scores)

    while True:
        gf.check_events(ai_settings, screen, mario, g_blocks, bg_blocks, items,
                        music)
        mario.update(music, mario)
        gf.check_time(ai_settings, scores, mario)
        gf.check_lives(ai_settings, scores)
        music.check_star(mario)
        music.check_dies(mario)
        music.check_win(mario)
        music.check_win2(mario)
        music.change_bg_music()

        gf.update_screen(ai_settings, screen, mario, g_blocks, bg_blocks,
                         enemies, monitor, chunks, items, scores, music)

        mainClock.tick(40)
Esempio n. 22
0
 def __init__(self, level):
     """Constructor"""
     self.__board = Board(level)
     self.__level = level
     self.ini_time = time.clock()
     if level == 2:
         self.__mario = Mario(1, BOARD_HEIGHT - 3 - 3 - 30)
         self.__mario.update(0, 0, 0, self.__board, self.__mario)
     else:
         self.__mario = Mario(0, BOARD_HEIGHT - 3 - 3)
     if level == 1:
         self.bg_music = subprocess.Popen(
             ["aplay", "-q", "./Sound/Super Mario Bros. Soundtrack.wav"])
     else:
         self.bg_music = subprocess.Popen([
             "aplay", "-q",
             "./Sound/Super Mario Underground Themes 1985 - 2010.wav"
         ])
     self.win = 0
Esempio n. 23
0
def run_game():
    # Initialize pygame, settings, and screen object.
    pygame.init()
    settings = Settings()
    '''
    full_screen = pygame.display.set_mode((0, 0), pygame.FULLSCREEN)
    screen = pygame.Surface((settings.screen_width, settings.screen_height))
    
    After everything has been blit onto screen use:
    full_screen.blit(pygame.transform.scale(screen, (1980, 1080)), (0, 0))
    pygame.display.flip()
    '''
    screen = pygame.display.set_mode(
        (settings.screen_width, settings.screen_height))
    ui = UserInterface(settings, screen)
    pygame.display.set_caption("Super Mario Bros")
    # Create our timers
    timers = Timers()

    # Create a group to hold all enemies
    enemies = Group()

    # Create our Hero
    mario_ = Mario(settings, screen, ui, timers)

    # Create a group to hold all objects and background
    objects = Group()
    background = Group()
    items = Group()

    # Create first level
    curlevel = Level1_1(settings, screen, enemies, objects, background, mario_,
                        ui, timers)

    while True:
        timers.curtime = pygame.time.get_ticks()
        gf.check_events(settings, mario_)
        if curlevel.active:
            gf.update_pos(settings, timers, enemies, objects, background,
                          curlevel, items, mario_, ui)
            gf.update_animations(enemies, timers, objects, mario_)
            gf.update_level_timer(ui, timers, mario_)
            gf.update_screen(screen, ui, enemies, timers, objects, background,
                             curlevel, mario_, items)
            if ui.lives == 0:
                curlevel.active = False
                ui.lives = 3
                settings.level_num = 0
        else:
            objects.empty()
            background.empty()
            items.empty()
            enemies.empty()
            curlevel = gf.change_level(settings, screen, enemies, objects,
                                       background, mario_, ui, timers)
Esempio n. 24
0
def enter():
    global mario, map, enemy, object
    mario = Mario()
    map = Map()
    enemy = Enemy()
    object = Object()

    game_world.add_object(map, 0)
    game_world.add_object(object, 1)
    game_world.add_object(mario, 2)
    game_world.add_object(enemy, 3)
    pass
Esempio n. 25
0
    def __init__(self, debug: bool = False) -> None:
        super().__init__(fps=FPS)
        self.window = Window(b'', dimensions=400 + 400j)
        self.renderer = self.window.renderer()
        self.mario_texture = self.renderer.load_texture(b'res/mario.png')
        self.background = Background(
            color=Color(107, 142, 255),
            texture=self.renderer.load_texture(b'res/background.png'))
        self.mario = Mario(keyboard=self.keyboard,
                           upper_left=100 + 100j,
                           texture=self.mario_texture)
        self.camera = FollowerCamera(target=self.mario,
                                     view_dimensions=400 + 400j,
                                     window_dimensions=400 + 400j,
                                     renderer=self.renderer)
        self.integrator = Integrator(timestep=2,
                                     gravity=300,
                                     horizontal_drag=0.2,
                                     entities=[self.mario],
                                     terrain=MarioGame.create_terrain())

        self.debug = debug
Esempio n. 26
0
def enter():
    global mario, map, enemy, object, fire_ball
    mario = Mario()
    map = Map()
    enemy = Enemy()
    object = Object()
    fire_ball = Ball()

    game_world.add_object(map, 0)
    game_world.add_object(object, 1)
    game_world.add_object(mario, 0)
    game_world.add_object(enemy, 1)
    pass
Esempio n. 27
0
 def new(self):
     # start a new game
     self.all_sprites = pg.sprite.Group()
     self.fireballs = pg.sprite.Group()
     # self.platforms = pg.sprite.Group()
     self.player = Mario(game=self)
     self.all_sprites.add(self.player)
     self.bg = Level1(mario=self.player, screen=self.screen, game=self)
     # for plat in PLATFORM_LIST:
     #     p = Platform(*plat)
     #     self.all_sprites.add(p)
     #     self.platforms.add(p)
     self.run()
Esempio n. 28
0
    def reset_game(self):
        # print("Received reset request")
        self.bgm.stop()
        # Hard or soft?
        if self.stats.lives_left == 0:
            reset_type = "Hard"
            # print("Reset - Hard")
        else:
            reset_type = "Soft"
            # print("Reset - Soft")

        # Soft - Lives remain
        #  Only score and time are refreshed
        if reset_type == "Soft":
            self.stats.score = 0
            self.stats.time = 400
            self.stats.last_time_update = pygame.time.get_ticks()
            self.reset_enemies()
            self.map = Map(self.screen, settings, self.enemies)
            self.mario = Mario(self.screen, settings, self.map)
            self.map.set_mario(self.mario)

        # Hard -  All lives are gone
        # All but high score are reset
        elif reset_type == "Hard":
            self.stats.score = 0
            self.stats.time = 400
            self.stats.last_time_update = pygame.time.get_ticks()
            self.stats.coins = 0
            self.stats.lives_left = 3
            self.reset_enemies()
            self.map = Map(self.screen, settings, self.enemies)
            self.mario = Mario(self.screen, settings, self.map)

        # The game has been reset, resume gameplay
        settings.game_status = "Ready"
        settings.game_active = True
        self.play()
	def __init__(self):
		"""Initialize the game, and create game resources."""
		pygame.init()
		self.settings = Settings()

		self.screen = pygame.display.set_mode((0, 0), pygame.FULLSCREEN)
		self.settings.screen_width = self.screen.get_rect().width
		self.settings.screen_height = self.screen.get_rect().height
		pygame.display.set_caption('Alien Invasion')

		# Create an instance to store game statistics,
		#	and create a scoreboard.
		self.stats = GameStats(self)
		self.sb = Scoreboard(self)

		self.mario = Mario(self)
		self.bullets = pygame.sprite.Group()
		self.aliens = pygame.sprite.Group()

		self._create_fleet()

		# Make the play button.
		self.play_button = Button(self, 'Play')
Esempio n. 30
0
def run_game():
    pygame.init()
    mario_settings = MarioSettings()
    screen = pygame.display.set_mode(
        (mario_settings.screen_width, mario_settings.screen_height))
    pygame.display.set_caption('Mario')
    bg_color = mario_settings.bg_color
    mario = Mario(screen)

    pygame.key.set_repeat(10, 7)  #Continious movement function in pygame

    while True:
        mf.check_events(mario)
        mf.update_screen(mario_settings, screen, mario)
Esempio n. 31
0
def main():
    """ Main Program """
    pygame.init()
    FPS = 60

    # Used to manage how fast the screen updates
    clock = pygame.time.Clock()

    # Set the height and width of the screen

    screen = pygame.display.set_mode(config.SIZE, pygame.DOUBLEBUF, 32)

    pygame.display.set_caption("Super Mario Bros!")

    # Create the player
    player = Mario()


    # Set the current level
    current_level_no = 1
    current_level = levels.Level(player)

    load_level(current_level)

    active_sprite_list = pygame.sprite.Group()
    player.level = current_level

    player.rect.x = 120
    #Player always starts in the same point
    player.rect.y = config.SCREEN_HEIGHT - player.rect.height - 64
    active_sprite_list.add(player)

    #Loop until the user clicks the close button.
    done = False


    # -------- Main Program Loop -----------
    while not done:

        #Set Level Physics
        milliseconds =  clock.tick(FPS)
        seconds = milliseconds / 1000.0 # seconds passed since last frame (float)
        playtime = current_level.physics_info['play_time'] + seconds
        current_level.physics_info['current_time'] = milliseconds
        current_level.physics_info['seconds'] = seconds
        current_level.physics_info['play_time'] = playtime


        for event in pygame.event.get(): # User did something
            if event.type == pygame.QUIT: # If user clicked close
                done = True # Flag that we are done so we exit this loop

            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_s:
                    player.is_running = True
                if event.key == pygame.K_a and player.state != config.MARIO_STATE_JUMPING:
                    player.jump()

            if event.type == pygame.KEYUP:
                if event.key == pygame.K_s:
                    player.is_running = False
                if event.key == pygame.K_a:
                    player.fight_gravity = False


        keys = pygame.key.get_pressed()
        if keys[pygame.K_LEFT]:
            player.go_left()
        if keys[pygame.K_RIGHT]:
            player.go_right()
        if not keys[pygame.K_LEFT] and not keys[pygame.K_RIGHT]:
            player.stop()

        # Update the player.
        active_sprite_list.update()

        # Update items in the level
        current_level.update()

       # If the player gets near the right side, shift the world left (-x)
        LIMIT = config.SCREEN_WIDTH - config.SCREEN_PLAYER_OFFSET
        if player.rect.x >= LIMIT:
            diff = player.rect.x - LIMIT
            player.rect.x = LIMIT
            current_level.shift_world(-diff)

        # If the player gets to the end of the level, go to the next level
        current_position = player.rect.x + current_level.world_shift


        # ALL CODE TO DRAW SHOULD GO BELOW THIS COMMENT
        current_level.draw(screen)
        active_sprite_list.draw(screen)




        #print(current_level.physics_info)
        """
        pygame.display.set_caption("Millis({})/Seconds({})/PlayTime({}) limit FPS to {} (now: {:.2f})".format(
                       milliseconds, seconds, playtime, FPS,clock.get_fps()))
        """
        # Go ahead and update the screen with what we've drawn.
        pygame.display.flip()
    # Be IDLE friendly. If you forget this line, the program will 'hang'
    # on exit.
    pygame.quit()
Esempio n. 32
0
from __future__ import division

from mario import Mario
from nn import NeuralNetwork
import cPickle as pickle

emulator = Mario()
with open('./bestNN', 'rb') as file:
    nn = pickle.load(file)

print(nn.weights)

emulator.setNeuralNetwork(nn)
emulator.run()
Esempio n. 33
0
def game():
    pygame.init()

    FPS = 10
    clock = pygame.time.Clock()

    size = (600, 850)

    screen = pygame.display.set_mode(size)  # Main surface

    ss = spritesheet.spritesheet('res\sprites\hammer.png')
    scale_factor = 4
    hammer_img = pygame.transform.scale(ss.image_at((0, 0, 10, 15)), (10*scale_factor, 15*scale_factor))

    ss = spritesheet.spritesheet('res\sprites\misc.gif')
    scale_factor = 4
    platform_img = pygame.transform.scale(ss.image_at((222, 270, 16, 10)), (16*scale_factor, 10*scale_factor))

    platforms = []

    h = size[1] - platform_img.get_height() - 50

    for j in range(6):
        l = []
        for i in range(0, size[0], platform_img.get_width()):
            l.append((i, h))
        platforms.append(l)
        h -= platform_img.get_height() * 3

    platforms.append([(300, 50), (300+platform_img.get_width(), 50)])

    #(106, 125)

    #Segment platforms
    for i in range(len(platforms[0])/2-2, len(platforms[0])):
        curr_y = platforms[0][i][1]
        curr_y -= 6*(i - (len(platforms[0])/2-2))
        platforms[0][i] = (platforms[0][i][0], curr_y)

    for i in range(0, len(platforms[1])/2):
        curr_y = platforms[1][i][1]
        curr_y += 6*(i - (len(platforms[1])/2))
        ##print i
        platforms[1][i] = (platforms[1][i][0], curr_y)

    for i in range(len(platforms[2])/2-2, len(platforms[0])):
        curr_y = platforms[2][i][1]
        curr_y -= 6*(i - (len(platforms[2])/2-2))
        platforms[2][i] = (platforms[2][i][0], curr_y)

    for i in range(0, len(platforms[3])/2):
        curr_y = platforms[3][i][1]
        curr_y += 6*(i - (len(platforms[3])/2))
        ##print i
        platforms[3][i] = (platforms[3][i][0], curr_y)

    for i in range(len(platforms[4])/2-2, len(platforms[4])):
        curr_y = platforms[4][i][1]
        curr_y -= 6*(i - (len(platforms[4])/2-2))
        ##print i
        platforms[4][i] = (platforms[4][i][0], curr_y)

    barrel_sprite = ss.image_at((95, 260, 16, 10))
    barrel_sprite   = pygame.transform.scale(barrel_sprite, (16*scale_factor, 10*scale_factor))

    rolling_barrel_sprite_arr = [ss.image_at((65, 257, 15, 12)).convert_alpha(), ss.image_at((80, 257, 15, 12)).convert_alpha(), ss.image_at((65, 270, 15, 10)).convert_alpha(), ss.image_at((80, 270, 15, 10)).convert_alpha()]

    for b in range(len(rolling_barrel_sprite_arr)):
        rolling_barrel_sprite_arr[b] = pygame.transform.scale(rolling_barrel_sprite_arr[b], (10*scale_factor, 10*scale_factor))

##    rolling_barrel = RollingBarrel((300,15*scale_factor*2+5), rolling_barrel_sprite_arr, (170, size[0]))

    rolling_barrels = []

    scale_factor  = 3
    mario_sprites = []
    mario_sprites.append(pygame.Surface.convert_alpha(pygame.transform.scale(ss.image_at((94, 3, 15, 17)), (15*scale_factor, 17*scale_factor))))
    mario_sprites.append(pygame.Surface.convert_alpha(pygame.transform.scale(ss.image_at((175, 3, 15, 17)), (15*scale_factor, 17*scale_factor))))
    mario_sprites.append(pygame.Surface.convert_alpha(pygame.transform.scale(ss.image_at((160, 3, 15, 17)), (15*scale_factor, 17*scale_factor))))
    mario_sprites.append(pygame.Surface.convert_alpha(pygame.transform.scale(ss.image_at((135, 3, 15, 17)), (15*scale_factor, 17*scale_factor))))
    mario_sprites.append(pygame.Surface.convert_alpha(pygame.transform.scale(ss.image_at((114, 4, 15, 17)), (15*scale_factor, 17*scale_factor))))
    mario_sprites.append(pygame.Surface.convert_alpha(pygame.transform.scale(ss.image_at((196, 3, 15, 17)), (15*scale_factor, 17*scale_factor))))

    mario_hammer_sprites = []
    mario_hammer_sprites.append(pygame.Surface.convert_alpha(pygame.transform.scale(ss.image_at((69, 55, 26, 20)), (15*scale_factor, 17*scale_factor))))

    mario_sprites.append(pygame.Surface.convert(pygame.transform.scale(ss.image_at((69, 55, 28, 18)), (20*scale_factor, 22*scale_factor))))
    mario_sprites.append(pygame.Surface.convert(pygame.transform.scale(ss.image_at((102, 43, 19, 30)), (22*scale_factor, 26*scale_factor))))
    mario_sprites.append(pygame.Surface.convert(pygame.transform.scale(ss.image_at((69, 55, 28, 18)), (20*scale_factor, 22*scale_factor))))
    mario_sprites.append(pygame.Surface.convert(pygame.transform.scale(ss.image_at((69, 55, 28, 18)), (20*scale_factor, 22*scale_factor))))
    mario_sprites.append(pygame.Surface.convert(pygame.transform.scale(ss.image_at((157, 54, 28, 18)), (20*scale_factor, 22*scale_factor))))
    mario_sprites.append(pygame.Surface.convert(pygame.transform.scale(ss.image_at((189, 43, 19, 30  )), (22*scale_factor, 26*scale_factor))))
    #(69,55)

    mario_character = Mario((0, size[1]-mario_sprites[0].get_height()-62), mario_sprites, mario_hammer_sprites)

    daisy_sprite = pygame.Surface.convert_alpha(pygame.transform.scale(ss.image_at((106, 125, 15, 17)), (15*scale_factor, 17*scale_factor)))

    ss = spritesheet.spritesheet('res\sprites\enemies.png')

    dk_sprites = []
    dk_sprites.append(ss.image_at((100, 0, 50, 40)))

    for i in range(5):
        dk_sprites.append(ss.image_at((50*i, 50, 50, 40)))

    for i in range(5):
        dk_sprites.append(ss.image_at((50*i, 100, 50, 40)))

    scale_factor = 2

    ##print "# of sprites", len(dk_sprites)

    for i in range(len(dk_sprites)):
        dk_sprites[i] = pygame.transform.scale(dk_sprites[i], (50*scale_factor, 40*scale_factor))

    ss = spritesheet.spritesheet('res\sprites\ladder.png')

    scale_factor = 2
    ladder_sprite = pygame.transform.scale(ss.image_at((0, 0, 20, 50)), (int(20*scale_factor), int(40*scale_factor)))

    ladders = [[(500, 660)],[(50, 540)],[(500, 420)],[(70, 300)],[(480, 190)],[(310, 90)],[]]

    background = pygame.Surface(size) # BG Surface
    background = background.convert()
    blank = pygame.Surface(size)
    blank.fill(BLACK)

    foreground = pygame.Surface(size)

    background.fill(BLACK)

    dk_sprite_counter = 1

    left, right, up, down, jump = False, False, False, False, False

    dk_launch_stage = 0
    dk_launch = False

    game_state = True

    items = [(400,300)]

    launch_buffer = 0

    daisy_call = 0

    global begin

##    while not begin:
##        font = pygame.font.Font(None, 40)
##        text = font.render("Donkey Kong", 1, (250, 0, 0))
##        font = pygame.font.Font(None, 30)
##        subtitle = font.render("Press Space to Start", 1, (250, 0, 0))
##        background.blit(text, (int(size[0]/2)-70, int(size[1]/2)))
##        screen.blit(background, (0, 0))
##        pygame.display.flip()
##        if ev.type == pygame.KEYDOWN:
##            if ev.key == 32:
##                begin = False

    while game_state and begin:
        global speed
        if launch_buffer % speed == 0:
            dk_launch = True
        launch_buffer += 1

        ev = pygame.event.poll()
        if ev.type == pygame.QUIT:
            ##print "Exit"
            quit_game()

        if dk_launch:
            #print dk_launch_stage
            if dk_launch_stage == 0:
                dk_sprite_counter = 0
            elif dk_launch_stage == 4:
                dk_sprite_counter = 5
            elif dk_launch_stage == 8:
                dk_sprite_counter = 1
                dk_launch_stage = 0
                dk_launch = False
                fall = random.randint(0, 1)
                if fall == 1:
                    rolling_barrels.append(RollingBarrel((170,15*scale_factor*2+50), rolling_barrel_sprite_arr, (170, size[0]), True))
                else:
                    rolling_barrels.append(RollingBarrel((170,15*scale_factor*2+50), rolling_barrel_sprite_arr, (170, size[0])))
            if dk_launch:
                dk_launch_stage += 1
        # Keyboard events
        if ev.type == pygame.KEYDOWN:
            print ev.key
            # Cycle sprites for DK
            if ev.key == 113:
                if dk_sprite_counter == 1:
                    dk_sprite_counter = 0
                elif dk_sprite_counter == 0:
                    dk_sprite_counter = 5
                elif dk_sprite_counter == 5:
                    dk_sprite_counter = 1
            if ev.key == 275:
                right = True
            if ev.key == 276:
                left = True
            if ev.key == 273:
                up = True
            if ev.key == 274:
                down = True
            if ev.key == 116:
                dk_launch = True
            if ev.key == 32:
                jump = True
        if ev.type == pygame.KEYUP:
            if ev.key == 275:
                right = False
            if ev.key == 276:
                left = False
            if ev.key == 273:
                up = False
            if ev.key == 274:
                down = False
            if ev.key == 32:
                jump = False

        background.blit(blank, (0,0))

        for places in platforms:
            for pls in places:
                background.blit(platform_img, pls)

        for levels in ladders:
            for points in levels:
                background.blit(ladder_sprite, points)

        background.blit(dk_sprites[dk_sprite_counter], (80,88))


        mario_character.render(background)

##        rolling_barrel.update(platforms, platform_img.get_height(), ladders)
##        rolling_barrel.render(background)

        for rb in rolling_barrels:
            rb.update(platforms, platform_img.get_height(), ladders)
            rb.render(background)

        buffer_height = 5

        for i in range(4):
            background.blit(barrel_sprite, (0, buffer_height+barrel_sprite.get_height()*i))

        background.blit(daisy_sprite, (310, 10))

        m_items = []
        for i in items:
            m_items.append(pygame.Rect(i[0], i[1], hammer_img.get_width(), hammer_img.get_height()))
            background.blit(hammer_img, i)

        mario_status = mario_character.update(left, right, up, down, jump, platforms, platform_img.get_height(), ladders, rolling_barrels, m_items, pygame.Rect((310,10), (daisy_sprite.get_width(), daisy_sprite.get_height())))

        font = pygame.font.Font(None, 20)
        
        text = font.render("Lives: " + str(lives), 1, (250, 250, 250))
        background.blit(text, (int(size[0]-70), int(10)))

        if daisy_call > 0 and daisy_call < 150:
            font = pygame.font.Font(None, 25)
            text = font.render("HELP!", 1, (250, 250, 250))
            background.blit(text, (360, 10))
        daisy_call += 1
        if daisy_call >= 300:
            daisy_call = 0

        if mario_status == False:
            font = pygame.font.Font(None, 40)
            text = font.render("FAILED", 1, (250, 0, 0))
            background.blit(text, (int(size[0]/2), int(size[1]/2)))
            game_state = False
            global lives
            lives -= 1
        elif mario_status == 10:
            items = []
        elif type(mario_status) == tuple:
            rolling_barrels.pop(mario_status[1])
        elif mario_status == "Done":
            font = pygame.font.Font(None, 40)
            text = font.render("Level Complete", 1, (0, 250, 0))
            background.blit(text, (int(size[0]/2)-60, int(size[1]/2)))
            game_state = False
            global lives
            lives = 3
            global speed
            speed -= 100
            game_state = False

        screen.blit(background, (0, 0))
        pygame.display.flip()