├── player.png ├── music ├── main.ogg ├── gameover.mp3 └── stage_clear.wav ├── sounds ├── 1up.wav ├── bump.wav ├── coin.ogg ├── die.wav ├── kick.ogg ├── powerup.wav ├── stomp.wav ├── Jump_big.wav ├── fireball.ogg ├── powerdown.wav ├── Jump_small.wav ├── brick_break.wav └── powerup_appear.wav ├── tiles ├── null.png ├── blocks │ ├── block.png │ ├── broken.png │ ├── empty.png │ ├── what │ │ ├── what_0.png │ │ ├── what_1.png │ │ ├── what_2.png │ │ └── what_3.png │ └── brick │ │ ├── brick │ │ ├── brick_0.png │ │ ├── brick_1.png │ │ ├── brick_2.png │ │ ├── brick_3.png │ │ ├── brick_4.png │ │ ├── brick_5.png │ │ └── brick_6.png │ │ └── brick_idle │ │ └── brick_idle_0.png ├── objects │ ├── flag.png │ ├── bomb │ │ ├── bomb_0.png │ │ ├── bomb_1.png │ │ ├── bomb_2.png │ │ └── bomb_3.png │ ├── coin │ │ ├── coin_0.png │ │ ├── coin_1.png │ │ ├── coin_2.png │ │ ├── coin_3.png │ │ ├── coin_4.png │ │ └── coin_5.png │ ├── fireball │ │ ├── fireball_0.png │ │ ├── fireball_1.png │ │ ├── fireball_2.png │ │ └── fireball_3.png │ ├── flower │ │ ├── fpop │ │ │ ├── fpop_0.png │ │ │ ├── fpop_1.png │ │ │ ├── fpop_2.png │ │ │ ├── fpop_3.png │ │ │ └── fpop_4.png │ │ └── flower │ │ │ ├── flower_0.png │ │ │ ├── flower_1.png │ │ │ ├── flower_2.png │ │ │ └── flower_3.png │ ├── mushroom │ │ ├── mushroom_0.png │ │ └── pop │ │ │ ├── pop_0.png │ │ │ ├── pop_1.png │ │ │ ├── pop_2.png │ │ │ └── pop_3.png │ ├── bomber │ │ ├── bomber │ │ │ ├── bomber_0.png │ │ │ ├── bomber_1.png │ │ │ ├── bomber_2.png │ │ │ └── bomber_3.png │ │ └── bomber_pop │ │ │ ├── bomber_pop_0.png │ │ │ ├── bomber_pop_1.png │ │ │ ├── bomber_pop_2.png │ │ │ └── bomber_pop_3.png │ ├── explosion │ │ ├── explosion_0.png │ │ ├── explosion_1.png │ │ ├── explosion_2.png │ │ ├── explosion_3.png │ │ ├── explosion_4.png │ │ ├── explosion_5.png │ │ ├── explosion_6.png │ │ ├── explosion_7.png │ │ └── explosion_8.png │ └── coin_bounce │ │ ├── coin_bounce_0.png │ │ ├── coin_bounce_1.png │ │ ├── coin_bounce_2.png │ │ ├── coin_bounce_3.png │ │ ├── coin_bounce_4.png │ │ ├── coin_bounce_5.png │ │ ├── coin_bounce_6.png │ │ └── coin_bounce_7.png ├── pipes │ ├── pipe_0.png │ ├── pipe_1.png │ └── pipe_2.png ├── background │ ├── cloud_0.png │ ├── grass_0.png │ ├── hill_0.png │ ├── hill_1.png │ └── castle_0.png └── enemy │ ├── koopa │ ├── koopa_die │ │ └── koopa_die_0.png │ └── koopa_run │ │ ├── koopa_run_0.png │ │ └── koopa_run_1.png │ ├── goomba │ ├── goomba_die │ │ └── goomba_die_0.png │ └── goomba_run │ │ ├── goomba_run_0.png │ │ └── goomba_run_1.png │ ├── NES - Super Mario Bros - Enemies & Bosses_10.png │ ├── NES - Super Mario Bros - Enemies & Bosses_11.png │ ├── NES - Super Mario Bros - Enemies & Bosses_12.png │ ├── NES - Super Mario Bros - Enemies & Bosses_13.png │ ├── NES - Super Mario Bros - Enemies & Bosses_14.png │ ├── NES - Super Mario Bros - Enemies & Bosses_15.png │ ├── NES - Super Mario Bros - Enemies & Bosses_16.png │ ├── NES - Super Mario Bros - Enemies & Bosses_17.png │ ├── NES - Super Mario Bros - Enemies & Bosses_18.png │ ├── NES - Super Mario Bros - Enemies & Bosses_19.png │ ├── NES - Super Mario Bros - Enemies & Bosses_20.png │ ├── NES - Super Mario Bros - Enemies & Bosses_21.png │ ├── NES - Super Mario Bros - Enemies & Bosses_22.png │ ├── NES - Super Mario Bros - Enemies & Bosses_23.png │ ├── NES - Super Mario Bros - Enemies & Bosses_24.png │ ├── NES - Super Mario Bros - Enemies & Bosses_25.png │ ├── NES - Super Mario Bros - Enemies & Bosses_26.png │ ├── NES - Super Mario Bros - Enemies & Bosses_27.png │ ├── NES - Super Mario Bros - Enemies & Bosses_28.png │ ├── NES - Super Mario Bros - Enemies & Bosses_29.png │ ├── NES - Super Mario Bros - Enemies & Bosses_30.png │ ├── NES - Super Mario Bros - Enemies & Bosses_31.png │ ├── NES - Super Mario Bros - Enemies & Bosses_32.png │ ├── NES - Super Mario Bros - Enemies & Bosses_33.png │ ├── NES - Super Mario Bros - Enemies & Bosses_34.png │ ├── NES - Super Mario Bros - Enemies & Bosses_35.png │ ├── NES - Super Mario Bros - Enemies & Bosses_36.png │ ├── NES - Super Mario Bros - Enemies & Bosses_37.png │ ├── NES - Super Mario Bros - Enemies & Bosses_38.png │ ├── NES - Super Mario Bros - Enemies & Bosses_39.png │ ├── NES - Super Mario Bros - Enemies & Bosses_4.png │ ├── NES - Super Mario Bros - Enemies & Bosses_40.png │ ├── NES - Super Mario Bros - Enemies & Bosses_41.png │ ├── NES - Super Mario Bros - Enemies & Bosses_42.png │ ├── NES - Super Mario Bros - Enemies & Bosses_43.png │ ├── NES - Super Mario Bros - Enemies & Bosses_44.png │ ├── NES - Super Mario Bros - Enemies & Bosses_45.png │ ├── NES - Super Mario Bros - Enemies & Bosses_46.png │ ├── NES - Super Mario Bros - Enemies & Bosses_47.png │ ├── NES - Super Mario Bros - Enemies & Bosses_48.png │ ├── NES - Super Mario Bros - Enemies & Bosses_49.png │ ├── NES - Super Mario Bros - Enemies & Bosses_5.png │ ├── NES - Super Mario Bros - Enemies & Bosses_50.png │ ├── NES - Super Mario Bros - Enemies & Bosses_51.png │ ├── NES - Super Mario Bros - Enemies & Bosses_52.png │ ├── NES - Super Mario Bros - Enemies & Bosses_53.png │ ├── NES - Super Mario Bros - Enemies & Bosses_54.png │ ├── NES - Super Mario Bros - Enemies & Bosses_55.png │ ├── NES - Super Mario Bros - Enemies & Bosses_56.png │ ├── NES - Super Mario Bros - Enemies & Bosses_57.png │ ├── NES - Super Mario Bros - Enemies & Bosses_58.png │ ├── NES - Super Mario Bros - Enemies & Bosses_59.png │ ├── NES - Super Mario Bros - Enemies & Bosses_6.png │ ├── NES - Super Mario Bros - Enemies & Bosses_60.png │ ├── NES - Super Mario Bros - Enemies & Bosses_61.png │ ├── NES - Super Mario Bros - Enemies & Bosses_62.png │ ├── NES - Super Mario Bros - Enemies & Bosses_63.png │ ├── NES - Super Mario Bros - Enemies & Bosses_64.png │ ├── NES - Super Mario Bros - Enemies & Bosses_65.png │ ├── NES - Super Mario Bros - Enemies & Bosses_66.png │ ├── NES - Super Mario Bros - Enemies & Bosses_67.png │ ├── NES - Super Mario Bros - Enemies & Bosses_68.png │ ├── NES - Super Mario Bros - Enemies & Bosses_69.png │ ├── NES - Super Mario Bros - Enemies & Bosses_7.png │ ├── NES - Super Mario Bros - Enemies & Bosses_70.png │ ├── NES - Super Mario Bros - Enemies & Bosses_71.png │ ├── NES - Super Mario Bros - Enemies & Bosses_72.png │ ├── NES - Super Mario Bros - Enemies & Bosses_73.png │ ├── NES - Super Mario Bros - Enemies & Bosses_74.png │ ├── NES - Super Mario Bros - Enemies & Bosses_75.png │ ├── NES - Super Mario Bros - Enemies & Bosses_76.png │ ├── NES - Super Mario Bros - Enemies & Bosses_77.png │ ├── NES - Super Mario Bros - Enemies & Bosses_78.png │ ├── NES - Super Mario Bros - Enemies & Bosses_79.png │ ├── NES - Super Mario Bros - Enemies & Bosses_8.png │ ├── NES - Super Mario Bros - Enemies & Bosses_80.png │ ├── NES - Super Mario Bros - Enemies & Bosses_81.png │ ├── NES - Super Mario Bros - Enemies & Bosses_82.png │ ├── NES - Super Mario Bros - Enemies & Bosses_83.png │ ├── NES - Super Mario Bros - Enemies & Bosses_84.png │ ├── NES - Super Mario Bros - Enemies & Bosses_85.png │ ├── NES - Super Mario Bros - Enemies & Bosses_86.png │ ├── NES - Super Mario Bros - Enemies & Bosses_87.png │ ├── NES - Super Mario Bros - Enemies & Bosses_88.png │ ├── NES - Super Mario Bros - Enemies & Bosses_89.png │ ├── NES - Super Mario Bros - Enemies & Bosses_9.png │ ├── NES - Super Mario Bros - Enemies & Bosses_90.png │ ├── NES - Super Mario Bros - Enemies & Bosses_91.png │ ├── NES - Super Mario Bros - Enemies & Bosses_92.png │ ├── NES - Super Mario Bros - Enemies & Bosses_93.png │ ├── NES - Super Mario Bros - Enemies & Bosses_94.png │ ├── NES - Super Mario Bros - Enemies & Bosses_95.png │ ├── NES - Super Mario Bros - Enemies & Bosses_96.png │ ├── NES - Super Mario Bros - Enemies & Bosses_97.png │ ├── NES - Super Mario Bros - Enemies & Bosses_98.png │ ├── NES - Super Mario Bros - Enemies & Bosses_99.png │ ├── NES - Super Mario Bros - Enemies & Bosses_100.png │ ├── NES - Super Mario Bros - Enemies & Bosses_101.png │ ├── NES - Super Mario Bros - Enemies & Bosses_102.png │ ├── NES - Super Mario Bros - Enemies & Bosses_103.png │ ├── NES - Super Mario Bros - Enemies & Bosses_104.png │ ├── NES - Super Mario Bros - Enemies & Bosses_105.png │ ├── NES - Super Mario Bros - Enemies & Bosses_106.png │ ├── NES - Super Mario Bros - Enemies & Bosses_107.png │ ├── NES - Super Mario Bros - Enemies & Bosses_108.png │ ├── NES - Super Mario Bros - Enemies & Bosses_109.png │ ├── NES - Super Mario Bros - Enemies & Bosses_110.png │ ├── NES - Super Mario Bros - Enemies & Bosses_111.png │ ├── NES - Super Mario Bros - Enemies & Bosses_112.png │ ├── NES - Super Mario Bros - Enemies & Bosses_113.png │ ├── NES - Super Mario Bros - Enemies & Bosses_114.png │ ├── NES - Super Mario Bros - Enemies & Bosses_115.png │ ├── NES - Super Mario Bros - Enemies & Bosses_116.png │ ├── NES - Super Mario Bros - Enemies & Bosses_117.png │ ├── NES - Super Mario Bros - Enemies & Bosses_118.png │ ├── NES - Super Mario Bros - Enemies & Bosses_119.png │ ├── NES - Super Mario Bros - Enemies & Bosses_120.png │ ├── NES - Super Mario Bros - Enemies & Bosses_121.png │ ├── NES - Super Mario Bros - Enemies & Bosses_122.png │ ├── NES - Super Mario Bros - Enemies & Bosses_123.png │ ├── NES - Super Mario Bros - Enemies & Bosses_124.png │ ├── NES - Super Mario Bros - Enemies & Bosses_125.png │ ├── NES - Super Mario Bros - Enemies & Bosses_126.png │ ├── NES - Super Mario Bros - Enemies & Bosses_127.png │ ├── NES - Super Mario Bros - Enemies & Bosses_128.png │ ├── NES - Super Mario Bros - Enemies & Bosses_129.png │ ├── NES - Super Mario Bros - Enemies & Bosses_130.png │ ├── NES - Super Mario Bros - Enemies & Bosses_131.png │ ├── NES - Super Mario Bros - Enemies & Bosses_132.png │ ├── NES - Super Mario Bros - Enemies & Bosses_133.png │ ├── NES - Super Mario Bros - Enemies & Bosses_134.png │ ├── NES - Super Mario Bros - Enemies & Bosses_135.png │ ├── NES - Super Mario Bros - Enemies & Bosses_136.png │ ├── NES - Super Mario Bros - Enemies & Bosses_137.png │ ├── NES - Super Mario Bros - Enemies & Bosses_138.png │ ├── NES - Super Mario Bros - Enemies & Bosses_139.png │ ├── NES - Super Mario Bros - Enemies & Bosses_140.png │ ├── NES - Super Mario Bros - Enemies & Bosses_141.png │ ├── NES - Super Mario Bros - Enemies & Bosses_142.png │ ├── NES - Super Mario Bros - Enemies & Bosses_143.png │ ├── NES - Super Mario Bros - Enemies & Bosses_144.png │ ├── NES - Super Mario Bros - Enemies & Bosses_145.png │ ├── NES - Super Mario Bros - Enemies & Bosses_146.png │ ├── NES - Super Mario Bros - Enemies & Bosses_147.png │ ├── NES - Super Mario Bros - Enemies & Bosses_148.png │ ├── NES - Super Mario Bros - Enemies & Bosses_149.png │ ├── NES - Super Mario Bros - Enemies & Bosses_150.png │ ├── NES - Super Mario Bros - Enemies & Bosses_151.png │ ├── NES - Super Mario Bros - Enemies & Bosses_152.png │ ├── NES - Super Mario Bros - Enemies & Bosses_153.png │ ├── NES - Super Mario Bros - Enemies & Bosses_154.png │ ├── NES - Super Mario Bros - Enemies & Bosses_155.png │ ├── NES - Super Mario Bros - Enemies & Bosses_156.png │ ├── NES - Super Mario Bros - Enemies & Bosses_157.png │ ├── NES - Super Mario Bros - Enemies & Bosses_158.png │ ├── NES - Super Mario Bros - Enemies & Bosses_159.png │ ├── NES - Super Mario Bros - Enemies & Bosses_160.png │ ├── NES - Super Mario Bros - Enemies & Bosses_161.png │ ├── NES - Super Mario Bros - Enemies & Bosses_162.png │ ├── NES - Super Mario Bros - Enemies & Bosses_163.png │ ├── NES - Super Mario Bros - Enemies & Bosses_164.png │ ├── NES - Super Mario Bros - Enemies & Bosses_165.png │ ├── NES - Super Mario Bros - Enemies & Bosses_166.png │ ├── NES - Super Mario Bros - Enemies & Bosses_167.png │ ├── NES - Super Mario Bros - Enemies & Bosses_168.png │ ├── NES - Super Mario Bros - Enemies & Bosses_169.png │ ├── NES - Super Mario Bros - Enemies & Bosses_170.png │ ├── NES - Super Mario Bros - Enemies & Bosses_171.png │ ├── NES - Super Mario Bros - Enemies & Bosses_172.png │ ├── NES - Super Mario Bros - Enemies & Bosses_173.png │ ├── NES - Super Mario Bros - Enemies & Bosses_174.png │ ├── NES - Super Mario Bros - Enemies & Bosses_175.png │ ├── NES - Super Mario Bros - Enemies & Bosses_176.png │ ├── NES - Super Mario Bros - Enemies & Bosses_177.png │ ├── NES - Super Mario Bros - Enemies & Bosses_178.png │ ├── NES - Super Mario Bros - Enemies & Bosses_179.png │ ├── NES - Super Mario Bros - Enemies & Bosses_180.png │ ├── NES - Super Mario Bros - Enemies & Bosses_181.png │ ├── NES - Super Mario Bros - Enemies & Bosses_182.png │ ├── NES - Super Mario Bros - Enemies & Bosses_183.png │ ├── NES - Super Mario Bros - Enemies & Bosses_184.png │ ├── NES - Super Mario Bros - Enemies & Bosses_185.png │ ├── NES - Super Mario Bros - Enemies & Bosses_186.png │ ├── NES - Super Mario Bros - Enemies & Bosses_187.png │ ├── NES - Super Mario Bros - Enemies & Bosses_188.png │ ├── NES - Super Mario Bros - Enemies & Bosses_189.png │ ├── NES - Super Mario Bros - Enemies & Bosses_190.png │ ├── NES - Super Mario Bros - Enemies & Bosses_191.png │ ├── NES - Super Mario Bros - Enemies & Bosses_192.png │ ├── NES - Super Mario Bros - Enemies & Bosses_193.png │ ├── NES - Super Mario Bros - Enemies & Bosses_194.png │ ├── NES - Super Mario Bros - Enemies & Bosses_195.png │ ├── NES - Super Mario Bros - Enemies & Bosses_196.png │ ├── NES - Super Mario Bros - Enemies & Bosses_197.png │ ├── NES - Super Mario Bros - Enemies & Bosses_198.png │ ├── NES - Super Mario Bros - Enemies & Bosses_199.png │ └── NES - Super Mario Bros - Enemies & Bosses_200.png ├── player_animations ├── fire │ ├── mario_bros.png │ ├── firedie │ │ └── firedie_0.png │ ├── fireidle │ │ ├── bomber_0.png │ │ └── fireidle_0.png │ ├── firerun │ │ ├── firerun_0.png │ │ ├── firerun_1.png │ │ └── firerun_2.png │ ├── bigtofire │ │ ├── bigtofire_0.png │ │ └── bigtofire_1.png │ ├── firejump │ │ └── firejump_0.png │ └── firetobig │ │ ├── firetobig_0.png │ │ └── firetobig_1.png ├── small │ ├── die │ │ └── die_0.png │ ├── run │ │ ├── run_0.png │ │ ├── run_1.png │ │ └── run_2.png │ ├── flag │ │ └── flag_0.png │ ├── idle │ │ └── idle_0.png │ ├── jump │ │ └── jump_0.png │ └── small_to_big │ │ ├── small_to_big_0.png │ │ └── small_to_big_1.png ├── big │ ├── others │ │ ├── mario_4.png │ │ ├── mario_6.png │ │ ├── mario_7.png │ │ ├── mario_8.png │ │ ├── mario_9.png │ │ ├── mario_10.png │ │ ├── mario_11.png │ │ ├── mario_12.png │ │ ├── mario_13.png │ │ ├── mario_14.png │ │ ├── mario_15.png │ │ ├── mario_16.png │ │ ├── mario_17.png │ │ ├── mario_18.png │ │ └── mario_19.png │ ├── bigdie │ │ └── bigdie_0.png │ ├── bigidle │ │ └── bigidle_0.png │ ├── bigjump │ │ └── bigjump_0.png │ ├── bigrun │ │ ├── bigrun_0.png │ │ ├── bigrun_1.png │ │ └── bigrun_2.png │ └── big_to_small │ │ ├── big_to_small_0.png │ │ └── big_to_small_1.png └── bomber │ ├── bomberdie │ └── bomberdie_0.png │ ├── bomberrun │ ├── bomberrun_0.png │ ├── bomberrun_1.png │ └── bomberrun_2.png │ ├── bomberidle │ └── bomberidle_0.png │ ├── bomberjump │ └── bomberjump_0.png │ ├── bombertofire │ ├── bombertofire_0.png │ └── bombertofire_1.png │ └── firetobomber │ ├── firetobomber_0.png │ └── firetobomber_1.png ├── levels ├── readme.txt ├── map0.txt ├── backupfirstlevel.txt └── map1.txt ├── readme.txt ├── leveleditor.txt ├── LICENSE ├── MapEditor.py └── Mario.py /player.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/player.png -------------------------------------------------------------------------------- /music/main.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/music/main.ogg -------------------------------------------------------------------------------- /sounds/1up.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/sounds/1up.wav -------------------------------------------------------------------------------- /sounds/bump.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/sounds/bump.wav -------------------------------------------------------------------------------- /sounds/coin.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/sounds/coin.ogg -------------------------------------------------------------------------------- /sounds/die.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/sounds/die.wav -------------------------------------------------------------------------------- /sounds/kick.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/sounds/kick.ogg -------------------------------------------------------------------------------- /tiles/null.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/null.png -------------------------------------------------------------------------------- /music/gameover.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/music/gameover.mp3 -------------------------------------------------------------------------------- /sounds/powerup.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/sounds/powerup.wav -------------------------------------------------------------------------------- /sounds/stomp.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/sounds/stomp.wav -------------------------------------------------------------------------------- /sounds/Jump_big.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/sounds/Jump_big.wav -------------------------------------------------------------------------------- /sounds/fireball.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/sounds/fireball.ogg -------------------------------------------------------------------------------- /sounds/powerdown.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/sounds/powerdown.wav -------------------------------------------------------------------------------- /music/stage_clear.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/music/stage_clear.wav -------------------------------------------------------------------------------- /sounds/Jump_small.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/sounds/Jump_small.wav -------------------------------------------------------------------------------- /sounds/brick_break.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/sounds/brick_break.wav -------------------------------------------------------------------------------- /tiles/blocks/block.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/blocks/block.png -------------------------------------------------------------------------------- /tiles/blocks/broken.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/blocks/broken.png -------------------------------------------------------------------------------- /tiles/blocks/empty.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/blocks/empty.png -------------------------------------------------------------------------------- /tiles/objects/flag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/objects/flag.png -------------------------------------------------------------------------------- /tiles/pipes/pipe_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/pipes/pipe_0.png -------------------------------------------------------------------------------- /tiles/pipes/pipe_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/pipes/pipe_1.png -------------------------------------------------------------------------------- /tiles/pipes/pipe_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/pipes/pipe_2.png -------------------------------------------------------------------------------- /sounds/powerup_appear.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/sounds/powerup_appear.wav -------------------------------------------------------------------------------- /tiles/background/cloud_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/background/cloud_0.png -------------------------------------------------------------------------------- /tiles/background/grass_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/background/grass_0.png -------------------------------------------------------------------------------- /tiles/background/hill_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/background/hill_0.png -------------------------------------------------------------------------------- /tiles/background/hill_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/background/hill_1.png -------------------------------------------------------------------------------- /tiles/blocks/what/what_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/blocks/what/what_0.png -------------------------------------------------------------------------------- /tiles/blocks/what/what_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/blocks/what/what_1.png -------------------------------------------------------------------------------- /tiles/blocks/what/what_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/blocks/what/what_2.png -------------------------------------------------------------------------------- /tiles/blocks/what/what_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/blocks/what/what_3.png -------------------------------------------------------------------------------- /tiles/background/castle_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/background/castle_0.png -------------------------------------------------------------------------------- /tiles/objects/bomb/bomb_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/objects/bomb/bomb_0.png -------------------------------------------------------------------------------- /tiles/objects/bomb/bomb_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/objects/bomb/bomb_1.png -------------------------------------------------------------------------------- /tiles/objects/bomb/bomb_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/objects/bomb/bomb_2.png -------------------------------------------------------------------------------- /tiles/objects/bomb/bomb_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/objects/bomb/bomb_3.png -------------------------------------------------------------------------------- /tiles/objects/coin/coin_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/objects/coin/coin_0.png -------------------------------------------------------------------------------- /tiles/objects/coin/coin_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/objects/coin/coin_1.png -------------------------------------------------------------------------------- /tiles/objects/coin/coin_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/objects/coin/coin_2.png -------------------------------------------------------------------------------- /tiles/objects/coin/coin_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/objects/coin/coin_3.png -------------------------------------------------------------------------------- /tiles/objects/coin/coin_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/objects/coin/coin_4.png -------------------------------------------------------------------------------- /tiles/objects/coin/coin_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/objects/coin/coin_5.png -------------------------------------------------------------------------------- /player_animations/fire/mario_bros.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/player_animations/fire/mario_bros.png -------------------------------------------------------------------------------- /player_animations/small/die/die_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/player_animations/small/die/die_0.png -------------------------------------------------------------------------------- /player_animations/small/run/run_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/player_animations/small/run/run_0.png -------------------------------------------------------------------------------- /player_animations/small/run/run_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/player_animations/small/run/run_1.png -------------------------------------------------------------------------------- /player_animations/small/run/run_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/player_animations/small/run/run_2.png -------------------------------------------------------------------------------- /tiles/blocks/brick/brick/brick_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/blocks/brick/brick/brick_0.png -------------------------------------------------------------------------------- /tiles/blocks/brick/brick/brick_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/blocks/brick/brick/brick_1.png -------------------------------------------------------------------------------- /tiles/blocks/brick/brick/brick_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/blocks/brick/brick/brick_2.png -------------------------------------------------------------------------------- /tiles/blocks/brick/brick/brick_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/blocks/brick/brick/brick_3.png -------------------------------------------------------------------------------- /tiles/blocks/brick/brick/brick_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/blocks/brick/brick/brick_4.png -------------------------------------------------------------------------------- /tiles/blocks/brick/brick/brick_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/blocks/brick/brick/brick_5.png -------------------------------------------------------------------------------- /tiles/blocks/brick/brick/brick_6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/blocks/brick/brick/brick_6.png -------------------------------------------------------------------------------- /tiles/objects/fireball/fireball_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/objects/fireball/fireball_0.png -------------------------------------------------------------------------------- /tiles/objects/fireball/fireball_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/objects/fireball/fireball_1.png -------------------------------------------------------------------------------- /tiles/objects/fireball/fireball_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/objects/fireball/fireball_2.png -------------------------------------------------------------------------------- /tiles/objects/fireball/fireball_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/objects/fireball/fireball_3.png -------------------------------------------------------------------------------- /tiles/objects/flower/fpop/fpop_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/objects/flower/fpop/fpop_0.png -------------------------------------------------------------------------------- /tiles/objects/flower/fpop/fpop_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/objects/flower/fpop/fpop_1.png -------------------------------------------------------------------------------- /tiles/objects/flower/fpop/fpop_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/objects/flower/fpop/fpop_2.png -------------------------------------------------------------------------------- /tiles/objects/flower/fpop/fpop_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/objects/flower/fpop/fpop_3.png -------------------------------------------------------------------------------- /tiles/objects/flower/fpop/fpop_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/objects/flower/fpop/fpop_4.png -------------------------------------------------------------------------------- /tiles/objects/mushroom/mushroom_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/objects/mushroom/mushroom_0.png -------------------------------------------------------------------------------- /tiles/objects/mushroom/pop/pop_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/objects/mushroom/pop/pop_0.png -------------------------------------------------------------------------------- /tiles/objects/mushroom/pop/pop_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/objects/mushroom/pop/pop_1.png -------------------------------------------------------------------------------- /tiles/objects/mushroom/pop/pop_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/objects/mushroom/pop/pop_2.png -------------------------------------------------------------------------------- /tiles/objects/mushroom/pop/pop_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/objects/mushroom/pop/pop_3.png -------------------------------------------------------------------------------- /player_animations/big/others/mario_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/player_animations/big/others/mario_4.png -------------------------------------------------------------------------------- /player_animations/big/others/mario_6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/player_animations/big/others/mario_6.png -------------------------------------------------------------------------------- /player_animations/big/others/mario_7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/player_animations/big/others/mario_7.png -------------------------------------------------------------------------------- /player_animations/big/others/mario_8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/player_animations/big/others/mario_8.png -------------------------------------------------------------------------------- /player_animations/big/others/mario_9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/player_animations/big/others/mario_9.png -------------------------------------------------------------------------------- /player_animations/small/flag/flag_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/player_animations/small/flag/flag_0.png -------------------------------------------------------------------------------- /player_animations/small/idle/idle_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/player_animations/small/idle/idle_0.png -------------------------------------------------------------------------------- /player_animations/small/jump/jump_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/player_animations/small/jump/jump_0.png -------------------------------------------------------------------------------- /tiles/objects/bomber/bomber/bomber_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/objects/bomber/bomber/bomber_0.png -------------------------------------------------------------------------------- /tiles/objects/bomber/bomber/bomber_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/objects/bomber/bomber/bomber_1.png -------------------------------------------------------------------------------- /tiles/objects/bomber/bomber/bomber_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/objects/bomber/bomber/bomber_2.png -------------------------------------------------------------------------------- /tiles/objects/bomber/bomber/bomber_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/objects/bomber/bomber/bomber_3.png -------------------------------------------------------------------------------- /tiles/objects/explosion/explosion_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/objects/explosion/explosion_0.png -------------------------------------------------------------------------------- /tiles/objects/explosion/explosion_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/objects/explosion/explosion_1.png -------------------------------------------------------------------------------- /tiles/objects/explosion/explosion_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/objects/explosion/explosion_2.png -------------------------------------------------------------------------------- /tiles/objects/explosion/explosion_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/objects/explosion/explosion_3.png -------------------------------------------------------------------------------- /tiles/objects/explosion/explosion_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/objects/explosion/explosion_4.png -------------------------------------------------------------------------------- /tiles/objects/explosion/explosion_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/objects/explosion/explosion_5.png -------------------------------------------------------------------------------- /tiles/objects/explosion/explosion_6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/objects/explosion/explosion_6.png -------------------------------------------------------------------------------- /tiles/objects/explosion/explosion_7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/objects/explosion/explosion_7.png -------------------------------------------------------------------------------- /tiles/objects/explosion/explosion_8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/objects/explosion/explosion_8.png -------------------------------------------------------------------------------- /tiles/objects/flower/flower/flower_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/objects/flower/flower/flower_0.png -------------------------------------------------------------------------------- /tiles/objects/flower/flower/flower_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/objects/flower/flower/flower_1.png -------------------------------------------------------------------------------- /tiles/objects/flower/flower/flower_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/objects/flower/flower/flower_2.png -------------------------------------------------------------------------------- /tiles/objects/flower/flower/flower_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/objects/flower/flower/flower_3.png -------------------------------------------------------------------------------- /player_animations/big/bigdie/bigdie_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/player_animations/big/bigdie/bigdie_0.png -------------------------------------------------------------------------------- /player_animations/big/bigidle/bigidle_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/player_animations/big/bigidle/bigidle_0.png -------------------------------------------------------------------------------- /player_animations/big/bigjump/bigjump_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/player_animations/big/bigjump/bigjump_0.png -------------------------------------------------------------------------------- /player_animations/big/bigrun/bigrun_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/player_animations/big/bigrun/bigrun_0.png -------------------------------------------------------------------------------- /player_animations/big/bigrun/bigrun_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/player_animations/big/bigrun/bigrun_1.png -------------------------------------------------------------------------------- /player_animations/big/bigrun/bigrun_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/player_animations/big/bigrun/bigrun_2.png -------------------------------------------------------------------------------- /player_animations/big/others/mario_10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/player_animations/big/others/mario_10.png -------------------------------------------------------------------------------- /player_animations/big/others/mario_11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/player_animations/big/others/mario_11.png -------------------------------------------------------------------------------- /player_animations/big/others/mario_12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/player_animations/big/others/mario_12.png -------------------------------------------------------------------------------- /player_animations/big/others/mario_13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/player_animations/big/others/mario_13.png -------------------------------------------------------------------------------- /player_animations/big/others/mario_14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/player_animations/big/others/mario_14.png -------------------------------------------------------------------------------- /player_animations/big/others/mario_15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/player_animations/big/others/mario_15.png -------------------------------------------------------------------------------- /player_animations/big/others/mario_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/player_animations/big/others/mario_16.png -------------------------------------------------------------------------------- /player_animations/big/others/mario_17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/player_animations/big/others/mario_17.png -------------------------------------------------------------------------------- /player_animations/big/others/mario_18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/player_animations/big/others/mario_18.png -------------------------------------------------------------------------------- /player_animations/big/others/mario_19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/player_animations/big/others/mario_19.png -------------------------------------------------------------------------------- /tiles/enemy/koopa/koopa_die/koopa_die_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/koopa/koopa_die/koopa_die_0.png -------------------------------------------------------------------------------- /tiles/enemy/koopa/koopa_run/koopa_run_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/koopa/koopa_run/koopa_run_0.png -------------------------------------------------------------------------------- /tiles/enemy/koopa/koopa_run/koopa_run_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/koopa/koopa_run/koopa_run_1.png -------------------------------------------------------------------------------- /tiles/objects/coin_bounce/coin_bounce_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/objects/coin_bounce/coin_bounce_0.png -------------------------------------------------------------------------------- /tiles/objects/coin_bounce/coin_bounce_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/objects/coin_bounce/coin_bounce_1.png -------------------------------------------------------------------------------- /tiles/objects/coin_bounce/coin_bounce_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/objects/coin_bounce/coin_bounce_2.png -------------------------------------------------------------------------------- /tiles/objects/coin_bounce/coin_bounce_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/objects/coin_bounce/coin_bounce_3.png -------------------------------------------------------------------------------- /tiles/objects/coin_bounce/coin_bounce_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/objects/coin_bounce/coin_bounce_4.png -------------------------------------------------------------------------------- /tiles/objects/coin_bounce/coin_bounce_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/objects/coin_bounce/coin_bounce_5.png -------------------------------------------------------------------------------- /tiles/objects/coin_bounce/coin_bounce_6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/objects/coin_bounce/coin_bounce_6.png -------------------------------------------------------------------------------- /tiles/objects/coin_bounce/coin_bounce_7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/objects/coin_bounce/coin_bounce_7.png -------------------------------------------------------------------------------- /player_animations/fire/firedie/firedie_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/player_animations/fire/firedie/firedie_0.png -------------------------------------------------------------------------------- /player_animations/fire/fireidle/bomber_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/player_animations/fire/fireidle/bomber_0.png -------------------------------------------------------------------------------- /player_animations/fire/firerun/firerun_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/player_animations/fire/firerun/firerun_0.png -------------------------------------------------------------------------------- /player_animations/fire/firerun/firerun_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/player_animations/fire/firerun/firerun_1.png -------------------------------------------------------------------------------- /player_animations/fire/firerun/firerun_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/player_animations/fire/firerun/firerun_2.png -------------------------------------------------------------------------------- /player_animations/fire/bigtofire/bigtofire_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/player_animations/fire/bigtofire/bigtofire_0.png -------------------------------------------------------------------------------- /player_animations/fire/bigtofire/bigtofire_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/player_animations/fire/bigtofire/bigtofire_1.png -------------------------------------------------------------------------------- /player_animations/fire/fireidle/fireidle_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/player_animations/fire/fireidle/fireidle_0.png -------------------------------------------------------------------------------- /player_animations/fire/firejump/firejump_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/player_animations/fire/firejump/firejump_0.png -------------------------------------------------------------------------------- /player_animations/fire/firetobig/firetobig_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/player_animations/fire/firetobig/firetobig_0.png -------------------------------------------------------------------------------- /player_animations/fire/firetobig/firetobig_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/player_animations/fire/firetobig/firetobig_1.png -------------------------------------------------------------------------------- /tiles/blocks/brick/brick_idle/brick_idle_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/blocks/brick/brick_idle/brick_idle_0.png -------------------------------------------------------------------------------- /tiles/enemy/goomba/goomba_die/goomba_die_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/goomba/goomba_die/goomba_die_0.png -------------------------------------------------------------------------------- /tiles/enemy/goomba/goomba_run/goomba_run_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/goomba/goomba_run/goomba_run_0.png -------------------------------------------------------------------------------- /tiles/enemy/goomba/goomba_run/goomba_run_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/goomba/goomba_run/goomba_run_1.png -------------------------------------------------------------------------------- /tiles/objects/bomber/bomber_pop/bomber_pop_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/objects/bomber/bomber_pop/bomber_pop_0.png -------------------------------------------------------------------------------- /tiles/objects/bomber/bomber_pop/bomber_pop_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/objects/bomber/bomber_pop/bomber_pop_1.png -------------------------------------------------------------------------------- /tiles/objects/bomber/bomber_pop/bomber_pop_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/objects/bomber/bomber_pop/bomber_pop_2.png -------------------------------------------------------------------------------- /tiles/objects/bomber/bomber_pop/bomber_pop_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/objects/bomber/bomber_pop/bomber_pop_3.png -------------------------------------------------------------------------------- /player_animations/bomber/bomberdie/bomberdie_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/player_animations/bomber/bomberdie/bomberdie_0.png -------------------------------------------------------------------------------- /player_animations/bomber/bomberrun/bomberrun_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/player_animations/bomber/bomberrun/bomberrun_0.png -------------------------------------------------------------------------------- /player_animations/bomber/bomberrun/bomberrun_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/player_animations/bomber/bomberrun/bomberrun_1.png -------------------------------------------------------------------------------- /player_animations/bomber/bomberrun/bomberrun_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/player_animations/bomber/bomberrun/bomberrun_2.png -------------------------------------------------------------------------------- /player_animations/big/big_to_small/big_to_small_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/player_animations/big/big_to_small/big_to_small_0.png -------------------------------------------------------------------------------- /player_animations/big/big_to_small/big_to_small_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/player_animations/big/big_to_small/big_to_small_1.png -------------------------------------------------------------------------------- /player_animations/bomber/bomberidle/bomberidle_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/player_animations/bomber/bomberidle/bomberidle_0.png -------------------------------------------------------------------------------- /player_animations/bomber/bomberjump/bomberjump_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/player_animations/bomber/bomberjump/bomberjump_0.png -------------------------------------------------------------------------------- /player_animations/small/small_to_big/small_to_big_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/player_animations/small/small_to_big/small_to_big_0.png -------------------------------------------------------------------------------- /player_animations/small/small_to_big/small_to_big_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/player_animations/small/small_to_big/small_to_big_1.png -------------------------------------------------------------------------------- /player_animations/bomber/bombertofire/bombertofire_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/player_animations/bomber/bombertofire/bombertofire_0.png -------------------------------------------------------------------------------- /player_animations/bomber/bombertofire/bombertofire_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/player_animations/bomber/bombertofire/bombertofire_1.png -------------------------------------------------------------------------------- /player_animations/bomber/firetobomber/firetobomber_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/player_animations/bomber/firetobomber/firetobomber_0.png -------------------------------------------------------------------------------- /player_animations/bomber/firetobomber/firetobomber_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/player_animations/bomber/firetobomber/firetobomber_1.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_10.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_11.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_12.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_13.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_14.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_15.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_16.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_17.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_18.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_19.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_20.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_21.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_21.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_22.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_23.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_23.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_24.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_25.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_25.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_26.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_26.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_27.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_27.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_28.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_28.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_29.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_29.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_30.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_30.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_31.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_31.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_32.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_33.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_33.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_34.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_34.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_35.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_35.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_36.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_37.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_37.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_38.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_38.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_39.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_39.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_4.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_40.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_41.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_41.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_42.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_42.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_43.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_43.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_44.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_44.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_45.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_45.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_46.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_46.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_47.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_47.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_48.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_49.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_49.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_5.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_50.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_50.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_51.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_51.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_52.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_52.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_53.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_53.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_54.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_54.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_55.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_55.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_56.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_56.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_57.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_57.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_58.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_58.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_59.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_59.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_6.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_60.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_61.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_61.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_62.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_62.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_63.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_63.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_64.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_65.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_65.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_66.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_66.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_67.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_67.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_68.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_68.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_69.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_69.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_7.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_70.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_70.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_71.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_71.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_72.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_73.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_73.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_74.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_74.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_75.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_75.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_76.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_77.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_77.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_78.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_78.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_79.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_79.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_8.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_80.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_80.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_81.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_81.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_82.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_82.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_83.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_83.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_84.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_84.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_85.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_85.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_86.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_87.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_87.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_88.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_88.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_89.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_89.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_9.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_90.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_90.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_91.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_91.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_92.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_92.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_93.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_93.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_94.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_94.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_95.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_95.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_96.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_97.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_97.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_98.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_98.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_99.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_99.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_100.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_101.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_101.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_102.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_102.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_103.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_103.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_104.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_104.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_105.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_105.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_106.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_106.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_107.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_107.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_108.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_108.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_109.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_109.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_110.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_110.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_111.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_111.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_112.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_112.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_113.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_113.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_114.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_114.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_115.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_115.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_116.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_116.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_117.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_117.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_118.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_118.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_119.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_119.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_120.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_120.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_121.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_121.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_122.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_122.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_123.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_123.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_124.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_124.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_125.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_126.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_126.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_127.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_127.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_128.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_129.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_129.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_130.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_130.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_131.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_131.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_132.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_132.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_133.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_133.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_134.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_134.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_135.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_135.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_136.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_136.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_137.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_137.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_138.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_138.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_139.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_139.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_140.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_140.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_141.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_141.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_142.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_142.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_143.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_143.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_144.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_145.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_145.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_146.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_146.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_147.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_147.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_148.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_148.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_149.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_149.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_150.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_151.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_151.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_152.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_152.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_153.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_153.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_154.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_154.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_155.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_155.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_156.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_156.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_157.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_157.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_158.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_158.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_159.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_159.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_160.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_160.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_161.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_161.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_162.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_162.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_163.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_163.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_164.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_164.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_165.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_165.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_166.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_166.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_167.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_167.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_168.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_168.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_169.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_169.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_170.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_170.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_171.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_171.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_172.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_172.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_173.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_173.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_174.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_174.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_175.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_175.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_176.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_176.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_177.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_177.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_178.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_178.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_179.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_179.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_180.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_180.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_181.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_181.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_182.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_182.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_183.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_183.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_184.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_184.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_185.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_185.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_186.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_186.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_187.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_187.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_188.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_188.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_189.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_189.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_190.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_190.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_191.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_191.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_192.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_193.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_193.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_194.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_194.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_195.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_195.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_196.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_196.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_197.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_197.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_198.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_198.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_199.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_199.png -------------------------------------------------------------------------------- /tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/realskull/python-smb-clone/HEAD/tiles/enemy/NES - Super Mario Bros - Enemies & Bosses_200.png -------------------------------------------------------------------------------- /levels/readme.txt: -------------------------------------------------------------------------------- 1 | will update this later. 2 | not a complete list!!!! 3 | 4 | 0 = air ( spaces will act as air too ) 5 | 6 | ! = invisible block collider ( used to stop player from falling at start of level) 7 | a = broken bricks 8 | l = ladder type bricks 9 | b = breakable bricks 10 | ? = coin block 11 | c = coin 12 | @ = starting player location 13 | m = powerup (mushroom will come out if mario is small and fire flower will come out if mario is big) 14 | x = goomba enemy 15 | 16 | F = level end flag pole. 17 | 18 | q,w,e = small ,big, large pipes respectvly 19 | 20 | QWER = BACKGROUND TILES 21 | -------------------------------------------------------------------------------- /readme.txt: -------------------------------------------------------------------------------- 1 | version= 2020/5/11 2 | author = Utkrist Karki, Fever 3 | framework name = [HELPv1] 4 | 5 | =====CHANGES===== 6 | [+] Added a bomber powerup! Use x to shoot bombs. 7 | [+] Added a level editor. Read leveleditor.txt for info 8 | [0] Fixed a bug with sounds not playing and level issues. 9 | ================== 10 | 11 | state = fully playable first level 12 | 13 | No copyright on the framework. Feel free to modify and change according to your needs. If you do keep the code same, don't mind giving me some credits. 14 | 15 | Please remember that all the art and music (even the level design) and the design is copyrighted by Nintendo. 16 | 17 | ================================= 18 | 19 | *no bugs yet (i hope) 20 | 21 | 22 | ================================== 23 | CONTROLS 24 | up arrow - jump 25 | w- left move 26 | d - right move 27 | x - throw fireball 28 | -------------------------------------------------------------------------------- /leveleditor.txt: -------------------------------------------------------------------------------- 1 | Level editor for super mario brothers pygame clone. 2 | 3 | Simply open leveleditor.py and run it. REMEMBER PYGAME IS STILL REQUIRED. 4 | 5 | Use Arrow keys to move cursor 6 | Use A and D to switch the objects. 7 | Use W and S to switch types of objects. 8 | Use X to place an object and Z to remove it. 9 | Use 0 to go to next level. 10 | 11 | THE CHANGES YOU MAKE ARE APPLIED REALTIME! SO IT IS SAVED AFTER EVERY BLOCK YOU PLACE!! 12 | REMEMBER ALWAYS MAKE BACKUPS OF YOUR LEVEL! THE GAME CAN OVERWRITE THE LEVELS. 13 | 14 | Every level is 14blocks in height and upto 500blocks long. (CAN BE MADE LONGER) 15 | Sorry, only horizontal scrolling as it is a mario game. 16 | 17 | To use the level simply play the mario game. 18 | 19 | CHEATS! 20 | 21 | 1 - become small 22 | 2 - become big 23 | 3 - become fire 24 | 4 - become bomber 25 | 0 - goto next level 26 | 27 | To play levels simply run mario.py 28 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2024 Utkrist Karki 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /levels/map0.txt: -------------------------------------------------------------------------------- 1 | ! 2 | !! Q Q Q Q Q Q 3 | ! Q Q Q Q Q 4 | ! xx 5 | ! ? bbbbbbb bbbbbb? m bbb b?bb ll 6 | ! lll 7 | ! llll 8 | ! lllll 9 | ! ? bmb?b bmb b bb ? ? ? b bb l l ll l bb?b llllll 10 | ! xll ll lll ll lllllll 11 | ! lll lll llll lll llllllll 12 | !E@ W W W R W xq x w x e xx e W W WR W W W kxx W W R kW x x llllW llll E lllll llll R q W x q lllllllll F 13 | aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 14 | aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -------------------------------------------------------------------------------- /levels/backupfirstlevel.txt: -------------------------------------------------------------------------------- 1 | ! 2 | !! Q Q Q Q Q Q 3 | ! Q Q Q Q Q 4 | ! xx 5 | ! ? bbbbbbb bbbbbb? m bbb b?bb ll 6 | ! lll 7 | ! llll 8 | ! lllll 9 | ! ? bmb?b bmb b bb ? ? ? b bb l l ll l bb?b llllll 10 | ! xll ll lll ll lllllll 11 | ! lll lll llll lll llllllll 12 | !E@ W W W R W xq x w x e xx e W W WR W W W kxx W W R kW x x llllW llll E lllll llll R q W x q lllllllll F 13 | aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 14 | aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -------------------------------------------------------------------------------- /levels/map1.txt: -------------------------------------------------------------------------------- 1 | 2 | b x 3 | b b ? ? ? mm bbmbb l 4 | b k b k 5 | b b k 6 | b k b k x x k 7 | b x k x b lallllll ll lll ll lllll llllllll l 8 | bbbbm???bbbb laalllll lll lll b?b b?b 9 | b xaaallll l x l b?b 10 | b laaaalll l ?? 11 | b k aaaaal l l k k 12 | b q W@ @q E aaaaaa l W R W w W R W e W E x W W e F 13 | aaaaaaaaaaaaaaaaaaa l aaaaaa lll aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 14 | aaaaaaaaaaaaaaaaaaa l aaaaaa l aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /MapEditor.py: -------------------------------------------------------------------------------- 1 | __author__='Utkrist Karki,realskull' 2 | __version__='v1' 3 | __builddate__='2020/5/8' 4 | 5 | ''' 6 | MAP EDITOR 2D FOR ALL THE GAMES CREATED USING HELPv1 FRAMEWORK. 7 | ''' 8 | import pygame,sys 9 | from pygame.locals import * 10 | 11 | a0xe3d = 0 # jpt variable 12 | 13 | 14 | pygame.init() 15 | 16 | WINDOW_SIZE = (640,480) 17 | 18 | screen = pygame.display.set_mode(WINDOW_SIZE,0,32) 19 | 20 | display = pygame.Surface((300,200)) 21 | 22 | pygame.mixer.pre_init(44100, -16,2,512) 23 | 24 | myfont = pygame.font.SysFont("retro", 40) 25 | smallfont = pygame.font.SysFont("retro", 28) 26 | 27 | pygame.display.set_caption('[LEVEL EDITOR][HELPv1]') 28 | 29 | clock = pygame.time.Clock() 30 | 31 | 32 | player_img = pygame.image.load('player.png').convert() 33 | player_img.set_colorkey((255,255,255)) 34 | 35 | big_flag_img = pygame.image.load('player.png').convert() 36 | big_flag_img.set_colorkey((255,255,255)) 37 | 38 | small_flag_img = pygame.image.load('player_animations/small/flag/flag_0.png').convert() 39 | small_flag_img.set_colorkey((255,255,255)) 40 | 41 | playerDead_img = pygame.image.load('player_animations/small/die/die_0.png').convert() 42 | playerDead_img.set_colorkey((255,255,255)) 43 | 44 | mushroom_img = pygame.image.load('tiles/objects/mushroom/pop/pop_0.png').convert() 45 | mushroom_img.set_colorkey((255,255,255)) 46 | 47 | flower_img = pygame.image.load('tiles/objects/flower/fpop/fpop_0.png').convert() 48 | flower_img.set_colorkey((255,255,255)) 49 | 50 | bomber_img = pygame.image.load('tiles/objects/bomber/bomber_pop/bomber_pop_0.png').convert() 51 | bomber_img.set_colorkey((255,255,255)) 52 | 53 | bomb_img = pygame.image.load('tiles/objects/bomb/bomb_0.png').convert() 54 | bomb_img.set_colorkey((255,255,255)) 55 | 56 | explosion_img = pygame.image.load('tiles/objects/explosion/explosion_0.png').convert() 57 | explosion_img.set_colorkey((255,255,255)) 58 | 59 | fireball_img = pygame.image.load('tiles/objects/fireball/fireball_0.png').convert() 60 | fireball_img.set_colorkey((255,255,255)) 61 | 62 | coin_img = pygame.image.load('tiles/objects/coin/coin_0.png').convert() 63 | coin_img.set_colorkey((255,255,255)) 64 | 65 | coin_bounce_img = pygame.image.load('tiles/objects/coin_bounce/coin_bounce_0.png').convert() 66 | coin_bounce_img.set_colorkey((255,255,255)) 67 | 68 | flag_img = pygame.image.load('tiles/objects/flag.png').convert() 69 | flag_img.set_colorkey((255,255,255)) 70 | 71 | brick_img = pygame.image.load('tiles/blocks/brick/brick/brick_0.png') 72 | broken_brick_img = pygame.image.load('tiles/blocks/broken.png') 73 | block_img = pygame.image.load('tiles/blocks/block.png') 74 | 75 | pipe0_img = pygame.image.load('tiles/pipes/pipe_0.png').convert() 76 | pipe0_img.set_colorkey((255,255,255)) 77 | pipe1_img = pygame.image.load('tiles/pipes/pipe_1.png').convert() 78 | pipe1_img.set_colorkey((255,255,255)) 79 | pipe2_img = pygame.image.load('tiles/pipes/pipe_2.png').convert() 80 | pipe2_img.set_colorkey((255,255,255)) 81 | 82 | cloud0_img = pygame.image.load('tiles/background/cloud_0.png').convert() 83 | cloud0_img.set_colorkey((255,255,255)) 84 | grass0_img = pygame.image.load('tiles/background/grass_0.png').convert() 85 | grass0_img.set_colorkey((255,255,255)) 86 | hill0_img = pygame.image.load('tiles/background/hill_0.png').convert() 87 | hill0_img.set_colorkey((255,255,255)) 88 | hill1_img = pygame.image.load('tiles/background/hill_1.png').convert() 89 | hill1_img.set_colorkey((255,255,255)) 90 | castle0_img = pygame.image.load('tiles/background/castle_0.png').convert() 91 | castle0_img.set_colorkey((255,255,255)) 92 | 93 | what_block_img = pygame.image.load('tiles/blocks/what/what_0.png').convert() 94 | what_block_img.set_colorkey((255,255,255)) 95 | 96 | empty_what_block_img = pygame.image.load('tiles/blocks/empty.png') 97 | 98 | goomba_img = pygame.image.load('tiles/enemy/goomba/goomba_run/goomba_run_0.png').convert() 99 | goomba_img.set_colorkey((255,255,255)) 100 | koopa_img = pygame.image.load('tiles/enemy/koopa/koopa_run/koopa_run_0.png').convert() 101 | koopa_img.set_colorkey((255,255,255)) 102 | 103 | 104 | 105 | 106 | blue = (146,244,255) 107 | transparent = (255,255,255) 108 | skyblue = (107,140,255) 109 | red = 255, 0, 0 110 | green = 0,255, 0 111 | blue = 0, 0,255 112 | 113 | dict_index = 0 114 | dict_type_index = 0 115 | 116 | dict_type_indexes = ['player','blocks','objects','enemies','pipes','background'] 117 | 118 | dict_indexes = [['@','@','@'],['a','b','l'],['?','m','F'],['x','k','x'],['q','w','e'],['W','E','R']] 119 | 120 | tile_dict = { 121 | 'player':{'@':player_img}, 122 | 'blocks':{'a':broken_brick_img,'b':brick_img,'l':block_img}, 123 | 'objects':{'?':what_block_img,'m':what_block_img,'F':flag_img}, 124 | 'enemies':{'x':goomba_img,'k':koopa_img}, 125 | 'pipes':{'q':pipe0_img,'w':pipe1_img,'e':pipe2_img}, 126 | 'background':{'W':grass0_img,'E':hill0_img,'R':hill1_img} 127 | } 128 | 129 | tile_names ={ 130 | 'player':{'@':'starting player location'}, 131 | 'blocks':{'a':'broken_ground','b':'Breakable Bricks','l':'Stair Blocks'}, 132 | 'objects':{'?':'Coinblock','m':'Powerup Block','F':'End level flagpole'}, 133 | 'enemies':{'x':'Goomba','k':'Koopa'}, 134 | 'pipes':{'q':'Short Pipe','w':'Long Pipe','e':'Very much long pipe'}, 135 | 'background':{'W':'Grass','E':'Low Hills','R':'High Hills'} 136 | } 137 | 138 | tile_offsets ={ 139 | 'player':{'@':0}, 140 | 'blocks':{'a':0,'b':0,'l':0}, 141 | 'objects':{'?':0,'m':0,'F':152}, 142 | 'enemies':{'x':0,'k':0}, 143 | 'pipes':{'q':16,'w':32,'e':48}, 144 | 'background':{'W':0,'E':16,'R':0} 145 | } 146 | 147 | 148 | c_x = 10 149 | c_y = 10 150 | y_offset = 0 151 | 152 | placetile = False 153 | moving_left = False 154 | moving_right = False 155 | moving_up = False 156 | moving_down = False 157 | 158 | NextLevel = False 159 | 160 | scrollx = 0 161 | scrolly = 0 162 | 163 | true_scrollx = 0 164 | true_scrolly = 0 165 | 166 | level = 0 167 | 168 | deletetile = False 169 | levels = [] 170 | scroll = [] 171 | flags = [] 172 | game_map = [] 173 | coin_objects = [] 174 | what_blocks = [] 175 | empty_what_blocks = [] 176 | mushroom_blocks = [] 177 | mushrooms = [] 178 | flowers = [] 179 | bombers = [] 180 | bricks = [] 181 | goombas = [] 182 | koopas = [] 183 | broken_bricks = [] 184 | 185 | path = 'map' 186 | 187 | def create_map(path): 188 | f = open(path, 'w+') 189 | y = 0 190 | for i in range(15): 191 | for j in range(500): 192 | f.write(' ') 193 | 194 | f.write('\n') 195 | 196 | 197 | 198 | 199 | def loadlevels(path): 200 | level = 0 201 | while True: 202 | try: 203 | f = open(path + str(level) + '.txt','r') 204 | f.close() 205 | levels.append(path + str(level) + '.txt') 206 | level += 1 207 | except: 208 | break 209 | 210 | def load_map(path): # load the game map according to level aray 211 | try: 212 | f = open(path) 213 | except: 214 | create_map(path) 215 | f = open(path) 216 | 217 | data = f.read() 218 | f.close() 219 | data = data.split('\n') 220 | gamemap = [] 221 | for row in data: 222 | game_map.append(list(row)) 223 | return game_map 224 | 225 | def save_map(path): 226 | f = open(path, 'w') 227 | y = 0 228 | for layer in game_map: 229 | x = 0 230 | for tile in layer: 231 | f.write(tile) 232 | x += 1 233 | f.write('\n') 234 | y += 1 235 | 236 | f.close() 237 | 238 | 239 | 240 | global player_action 241 | global player_frame 242 | player_action = 'idle' # Player current action 243 | player_frame = 0 # Player frame 244 | player_flip = False # Flip player? 245 | 246 | 247 | class Flag(): 248 | def __init__(self, loc): 249 | self.loc = loc 250 | 251 | def render(self, surf): 252 | surf.blit(flag_img, (self.loc[0] - scroll[0], self.loc[1] - scroll[1])) 253 | 254 | def get_rect(self): 255 | return pygame.Rect(self.loc[0], self.loc[1], 16, 168) 256 | 257 | def collision_test(self, rect): 258 | flag_rect = self.get_rect() 259 | return flag_rect.colliderect(rect) 260 | 261 | class Coin_obj(): 262 | def __init__(self, loc): 263 | self.loc = loc 264 | 265 | def render(self, surf): 266 | surf.blit(coin_img, (self.loc[0] - scroll[0], self.loc[1] - scroll[1])) 267 | 268 | def get_rect(self): 269 | return pygame.Rect(self.loc[0], self.loc[1], 16, 16) 270 | 271 | def collision_test(self, rect): 272 | coin_rect = self.get_rect() 273 | return coin_rect.colliderect(rect) 274 | 275 | 276 | class Mushroom(): 277 | def __init__(self, loc): 278 | self.loc = [loc[0],loc[1]-16] 279 | self.img = mushroom_img 280 | 281 | def render(self, surf): 282 | surf.blit(self.img, (self.loc[0] - scroll[0], self.loc[1] - scroll[1])) 283 | 284 | def get_rect(self): 285 | return pygame.Rect(self.loc[0], self.loc[1], 16, 16) 286 | 287 | class Mushroom_block(): 288 | def __init__(self, loc): 289 | self.loc = loc 290 | self.img = what_block_img 291 | 292 | def render(self, surf): 293 | surf.blit(self.img, (self.loc[0] - scroll[0], self.loc[1] - scroll[1])) 294 | 295 | def get_rect(self): 296 | return pygame.Rect(self.loc[0], self.loc[1], 16, 16) 297 | 298 | def collision_test(self, rect): 299 | mushroom_block_rect = self.get_rect() 300 | return mushroom_block_rect.colliderect(rect) 301 | 302 | class What_block(): 303 | def __init__(self, loc): 304 | self.loc = loc 305 | self.img = what_block_img 306 | 307 | def render(self, surf): 308 | surf.blit(self.img, (self.loc[0] - scroll[0], self.loc[1] - scroll[1])) 309 | 310 | def get_rect(self): 311 | return pygame.Rect(self.loc[0], self.loc[1], 16, 16) 312 | 313 | def collision_test(self, rect): 314 | what_block_rect = self.get_rect() 315 | return what_block_rect.colliderect(rect) 316 | 317 | class Empty_what_block(): 318 | 319 | def __init__(self, loc): 320 | self.loc = loc 321 | 322 | def render(self, surf): 323 | surf.blit(empty_what_block_img, (self.loc[0] - scroll[0], self.loc[1] - scroll[1])) 324 | 325 | def get_rect(self): 326 | return pygame.Rect(self.loc[0], self.loc[1], 16, 16) 327 | 328 | def collision_test(self, rect): 329 | empty_block_rect = self.get_rect() 330 | return empty_block_rect.colliderect(rect) 331 | 332 | class Brick(): 333 | def __init__(self, loc): 334 | self.loc = loc 335 | self.img = brick_img 336 | 337 | def render(self, surf): 338 | surf.blit(self.img, (self.loc[0] - scroll[0], self.loc[1] - scroll[1])) 339 | 340 | def get_rect(self): 341 | return pygame.Rect(self.loc[0], self.loc[1], 16, 16) 342 | 343 | def get_small_rect(self): 344 | return pygame.Rect(self.loc[0], self.loc[1], 16, 14) 345 | 346 | def collision_test(self, rect): 347 | brick_rect = self.get_rect() 348 | return brick_rect.colliderect(rect) 349 | 350 | def bump(self): 351 | 352 | if self.isbumping: # After mario bumps 353 | self.rect.y -= self.y_vel 354 | self.y_vel += self.vertical_momentum 355 | 356 | if self.rect.y < (self.rest_height - 8): 357 | self.isbumping = False 358 | self.rect.y = self.rest_height 359 | 360 | 361 | 362 | 363 | 364 | class Goomba(): 365 | def __init__(self, loc): 366 | self.loc = loc 367 | self.img = goomba_img 368 | 369 | def render(self, surf): 370 | surf.blit(self.img, (self.loc[0] - scroll[0], self.loc[1] - scroll[1])) 371 | 372 | def get_rect(self): 373 | return pygame.Rect(self.loc[0], self.loc[1], 16, 16) 374 | 375 | def collision_test(self, rect): 376 | goomba_rect = self.get_rect() 377 | return goomba_rect.colliderect(rect) 378 | 379 | 380 | class Koopa(): 381 | def __init__(self, loc): 382 | self.loc = loc 383 | self.img = koopa_img 384 | 385 | 386 | 387 | def render(self, surf): 388 | surf.blit(self.img, (self.loc[0] - scroll[0], self.loc[1] - scroll[1])) 389 | 390 | def get_rect(self): 391 | return pygame.Rect(self.loc[0], self.loc[1], 16, 22) 392 | 393 | def collision_test(self, rect): 394 | koopa_rect = self.get_rect() 395 | return koopa_rect.colliderect(rect) 396 | 397 | 398 | ########## Game Main Functions ############################## 399 | 400 | loadlevels('levels/map') 401 | load_map(levels[0]) # load the map as tilemap 402 | 403 | #Create object\instances from classes according to loaded tilemap 404 | 405 | def loadtiles(): 406 | global tile_rects 407 | tile_rects = [] 408 | y = 0 409 | for layer in game_map: 410 | x = 0 411 | for tile in layer: 412 | if tile == '@': 413 | player_x = x*16 414 | player_y = y*16 415 | elif tile == 'c': 416 | coin_objects.append(Coin_obj((x*16,y*16))) 417 | elif tile == 'x': 418 | goombas.append(Goomba([x*16,y*16])) 419 | elif tile == 'k': 420 | koopas.append(Koopa([x*16,y*16])) 421 | elif tile == '?': 422 | what_blocks.append(What_block([x*16,y*16])) 423 | elif tile == 'm': 424 | mushroom_blocks.append(Mushroom_block([x*16,y*16])) 425 | elif tile == 'b': 426 | bricks.append(Brick([x*16,y*16])) 427 | elif tile == 'F': 428 | flags.append(Flag([x*16,y*16-152])) 429 | x += 1 430 | y += 1 431 | 432 | 433 | def render_map(): #Render the current map (Repeat every frame) 434 | #Rendering map from tilemap 435 | tile_rects.clear() 436 | y = 0 437 | for layer in game_map: 438 | x = 0 439 | for tile in layer: 440 | 441 | if tile == 'b':#If the current brick is broken dont add colliders 442 | brickrect = pygame.Rect(x*16,(y*16),16,14) 443 | if brickrect not in broken_bricks: 444 | tile_rects.append(brickrect) 445 | else: 446 | tile_rects.append(pygame.Rect(x*16,(y*16)+300,1,1)) 447 | 448 | if tile == 'a': 449 | display.blit(broken_brick_img,(x*16-scrollx,y*16-scrolly)) 450 | if tile == 'l': 451 | display.blit(block_img,(x*16-scrollx,y*16-scrolly)) 452 | 453 | if tile == 'q': 454 | display.blit(pipe0_img,(x*16-scrollx,(y*16)-16-scrolly)) 455 | tile_rects.append(pygame.Rect(x*16,(y*16)-16,32,32)) 456 | if tile == 'w': 457 | display.blit(pipe1_img,(x*16-scrollx,(y*16)-32-scrolly)) 458 | tile_rects.append(pygame.Rect(x*16,(y*16)-32,32,48)) 459 | if tile == 'e': 460 | display.blit(pipe2_img,(x*16-scrollx,(y*16)-48-scrolly)) 461 | tile_rects.append(pygame.Rect(x*16,(y*16)-48,32,64)) 462 | 463 | if tile == 'Q': 464 | display.blit(cloud0_img,(x*16-scrollx,(y*16)-scrolly)) 465 | if tile == 'W': 466 | display.blit(grass0_img,(x*16-scrollx,(y*16)-scrolly)) 467 | if tile == 'E': 468 | display.blit(hill0_img,(x*16-scrollx,(y*16)-16-scrolly)) 469 | if tile == 'R': 470 | display.blit(hill1_img,(x*16-scrollx,(y*16)-scrolly)) 471 | if tile == 'O': 472 | display.blit(castle0_img,(x*16-scrollx,(y*16)-scrolly)) 473 | 474 | if tile not in ['@',' ','0','c','x','?','b','m','q', 475 | 'w','e','Q','W','E','R','O','F','k']: #Add tile colliders if jpt is given 476 | tile_rects.append(pygame.Rect(x*16,y*16,16,16)) 477 | if tile == '?': 478 | tile_rects.append(pygame.Rect(x*16,(y*16),16,14)) 479 | if tile == 'm': 480 | tile_rects.append(pygame.Rect(x*16,(y*16),16,14)) 481 | if tile == 'F': 482 | tile_rects.append(pygame.Rect(x*16,(y*16),16,16)) 483 | 484 | 485 | x += 1 486 | y += 1 487 | 488 | 489 | 490 | loadtiles() 491 | 492 | while True: # Main game loop 493 | 494 | if dict_type_index > 5: 495 | dict_type_index = 5 496 | if dict_index > 2: 497 | dict_index = 2 498 | 499 | 500 | save_map('levels/map'+str(level)+'.txt') 501 | #UI ELEMENTS 502 | fpslabel = myfont.render('FPS:' + str(int(clock.get_fps())), 1, (0,0,0)) 503 | screen.blit(fpslabel, (20,20)) 504 | cordinates = myfont.render('X:'+str(c_x)+' Y:'+str(c_y), 1, (0,0,0)) 505 | screen.blit(cordinates, (500,20)) 506 | cordinates = myfont.render('Level:'+str(level), 1, (0,0,0)) 507 | screen.blit(cordinates, (500,50)) 508 | 509 | 510 | 511 | if NextLevel: 512 | NextLevel = False 513 | 514 | scrollx = 0 515 | scrolly = 0 516 | 517 | true_scrollx = 0 518 | true_scrolly = 0 519 | 520 | c_x = 5 521 | c_y = 5 522 | 523 | levels = [] 524 | scroll = [] 525 | flags = [] 526 | game_map = [] 527 | coin_objects = [] 528 | what_blocks = [] 529 | empty_what_blocks = [] 530 | mushroom_blocks = [] 531 | bricks = [] 532 | goombas = [] 533 | broken_bricks = [] 534 | tile_rects = [] 535 | koopas = [] 536 | level += 1 537 | print(level) 538 | load_map('levels/map'+str(level)+'.txt') 539 | 540 | 541 | loadtiles() 542 | 543 | display.fill(skyblue) 544 | 545 | true_scrollx += ((c_x*16-true_scrollx) -156) 546 | true_scrolly += ((c_y*16-true_scrolly) -106) 547 | 548 | scrollx = int(true_scrollx) 549 | scrolly = 16 550 | 551 | scroll = [scrollx,scrolly] 552 | current_type = dict_type_indexes[dict_type_index] 553 | current_tile = dict_indexes[dict_type_index][dict_index] 554 | 555 | current_name = tile_names[current_type][current_tile] 556 | y_offset = tile_offsets[current_type][current_tile] 557 | 558 | label = smallfont.render(current_type, 1, (0,0,0)) 559 | screen.blit(label, (280,5)) 560 | label = smallfont.render(str(current_name), 1, (0,0,0)) 561 | screen.blit(label, (280,60)) 562 | 563 | loadtiles() 564 | render_map() #draw the whole map on screen 565 | #Move the cursor 566 | if moving_left: 567 | if c_x == 0: 568 | c_x = 0 569 | else: 570 | c_x -= 1 571 | moving_left = False 572 | if moving_right: 573 | c_x += 1 574 | moving_right = False 575 | if moving_up: 576 | if c_y == 1: 577 | c_y = 1 578 | else: 579 | c_y -= 1 580 | moving_up = False 581 | if moving_down: 582 | if c_y == 13: 583 | c_y = 13 584 | else: 585 | c_y += 1 586 | moving_down = False 587 | 588 | if deletetile: 589 | game_map[c_y][c_x] = ' ' 590 | deletetile = False 591 | 592 | if placetile: 593 | game_map[c_y][c_x] = current_tile 594 | placetile = False 595 | 596 | 597 | # Render the level object. 598 | for brick in bricks: 599 | brick.render(display) 600 | 601 | for emptyblock in empty_what_blocks: 602 | emptyblock.render(display) 603 | 604 | for whatblock in what_blocks: 605 | whatblock.render(display) 606 | 607 | for mushroomblock in mushroom_blocks: 608 | mushroomblock.render(display) 609 | 610 | for coin in coin_objects: 611 | coin.render(display) 612 | 613 | for goomba in goombas: 614 | goomba.render(display) 615 | 616 | for koopa in koopas: 617 | koopa.render(display) 618 | 619 | for flag in flags: 620 | flag.render(display) 621 | 622 | for objects in [flags,koopas,goombas,coin_objects,mushroom_blocks,what_blocks,bricks]: 623 | objects.clear() 624 | 625 | display.blit(tile_dict[current_type][current_tile],(c_x*16 - scrollx,c_y*16 - y_offset - scrolly)) 626 | 627 | display.blit(tile_dict[current_type][current_tile],(150,10)) 628 | 629 | for event in pygame.event.get(): # Loop through every events of the game. 630 | 631 | if event.type == pygame.USEREVENT+0: 632 | for goo in goombas_kill: 633 | if not goo.flip: 634 | try: 635 | goombas.remove(goo) 636 | goombas_kill.remove(goo) 637 | except: 638 | break 639 | 640 | if event.type == pygame.USEREVENT+1: 641 | 642 | if a0xe3d == 0: 643 | player_rect.y -= 9 644 | a0xe3d = 1 645 | pygame.time.delay(10) 646 | 647 | 648 | 649 | 650 | 651 | if event.type == QUIT: # Check if the [X] Close window button is clicked. 652 | pygame.quit() # Exit the window. 653 | sys.exit() # Exit the console. 654 | 655 | # Input Handling. 656 | if event.type == KEYDOWN: # Check if any key is pressed 657 | if event.key == K_LEFT: # Check if the pressed key is left 658 | moving_left = True 659 | if event.key == K_RIGHT: # Check if the pressed key is right 660 | moving_right = True 661 | if event.key == K_UP: 662 | moving_up = True 663 | if event.key == K_DOWN: 664 | moving_down = True 665 | 666 | if event.key == K_0: 667 | NextLevel = True 668 | 669 | if event.key == K_x: 670 | placetile = True 671 | 672 | if event.key == K_a: 673 | dict_index -= 1 674 | if dict_index < 0: 675 | dict_index = 0 676 | 677 | if event.key == K_d: 678 | dict_index += 1 679 | 680 | if event.key == K_w: 681 | dict_type_index -= 1 682 | if dict_type_index < 0: 683 | dict_type_index = 0 684 | 685 | if event.key == K_s: 686 | dict_type_index += 1 687 | 688 | if event.key == K_z: 689 | deletetile = True 690 | 691 | if event.type == KEYUP: # Check if any key is released. 692 | if event.key == K_LEFT : # Check if the pressed key is left 693 | moving_left = False 694 | if event.key == K_RIGHT: # Check if the pressed key is right 695 | moving_right = False 696 | if event.key == K_UP: 697 | moving_up = False 698 | if event.key == K_DOWN: 699 | moving_down = False 700 | 701 | #Debug Console 702 | #print('\n' * 100) 703 | print('[x,y]:' + str(c_x) +','+ str(c_y)) 704 | #[y][x] 705 | pygame.display.update() # Update the display. 706 | pygame.display.set_caption('[LEVEL EDITOR][HELPv1] FPS:' + str(int(clock.get_fps()))) 707 | screen.blit(pygame.transform.scale(display,WINDOW_SIZE),(0,0)) 708 | clock.tick(60) # Cap the frame rate of the game to 60fps. 709 | 710 | -------------------------------------------------------------------------------- /Mario.py: -------------------------------------------------------------------------------- 1 | __author__='Utkrist Karki,realskull' 2 | __version__='v1' 3 | __builddate__='2020/5/8' 4 | 5 | # Python 3.7.7 , Pygame 1.9.6 6 | # HELP v1 ENGINE, WRITTEN BY UTKRIST KARKI 7 | #2D PLATFORMER SIDE SCROLLING ENGINE 8 | 9 | ''' 10 | 2D PERSPECTIVE 11 | PLATFORMER SIDE SCROLLING ( BOTH X & Y ) 12 | SIMPLE TILE MAP ( refer to map/readme.txt for info) 13 | MULTIPLE LEVELS 14 | ''' 15 | 16 | ''' 17 | MSG FROM DEV 18 | 19 | This is my first take on a super mario bros clone and a working 2d platformer 20 | engine for my future games. I will keep improving the engine and keep adding 21 | new features and optimizations. The code can be a bit messy and I tried to 22 | go a little bit towards object oriented route. This can be confusing for 23 | beginners so, I tried to comment each and every line of the code how it works 24 | and what it does. For Experienced verteran ones, You will find a lot 25 | of bad programming practises and really stupid way of doing things. 26 | 27 | Currently the game manages a 60fps lock and 200fps on a i5 3.6ghz cpu 28 | pygame doesn't use any rendering backend (openGL,directX,vulcan etc) so, 29 | gpu isn't used here. All the calculations are done by the cpu itself. 30 | 31 | Game doesn't use too much memory. Currently only uses 37MB (which is still 32 | a lot original one USED 2KB on NES. ) 33 | ''' 34 | 35 | import pygame,sys # pygame library and system library 36 | from pygame.locals import * # Import all the modules of pygame. 37 | 38 | a0xe3d = 0 # jpt variable 39 | 40 | # Initialization phase. 41 | ######## WINDOW INITIALIZATION ############################## 42 | pygame.init() # Initialization. 43 | 44 | WINDOW_SIZE = (640,480) # Window size (X,Y) in pixels 45 | 46 | screen = pygame.display.set_mode(WINDOW_SIZE,0,32) # Make the window. 47 | 48 | display = pygame.Surface((300,200)) # used as the surface for rendering, which is scaled 49 | 50 | pygame.mixer.pre_init(44100, -16,2,512) # Initialize the sound controller with 44100hz freq, 16bit stereo 512k buffer. 51 | 52 | myfont = pygame.font.SysFont("retro", 15) # initialize system fonts 53 | 54 | 55 | pygame.display.set_caption('SuperMarioBrothers - PyGame - UtkristKarki') # Set the window title. 56 | ###### PYGAME INITIALIZATION ################################ 57 | clock = pygame.time.Clock() # Set the clock timer. 58 | 59 | 60 | ########## Memory & Variable Initialization ################# 61 | 62 | #Image initialization.(many are just placeholder images) 63 | # .convert() is used for maintaining transparency. ( white is removed) 64 | 65 | 66 | player_img = pygame.image.load('player.png').convert() 67 | player_img.set_colorkey((255,255,255)) 68 | 69 | big_flag_img = pygame.image.load('player.png').convert() 70 | big_flag_img.set_colorkey((255,255,255)) 71 | 72 | small_flag_img = pygame.image.load('player_animations/small/flag/flag_0.png').convert() 73 | small_flag_img.set_colorkey((255,255,255)) 74 | 75 | playerDead_img = pygame.image.load('player_animations/small/die/die_0.png').convert() 76 | playerDead_img.set_colorkey((255,255,255)) 77 | 78 | mushroom_img = pygame.image.load('tiles/objects/mushroom/pop/pop_0.png').convert() 79 | mushroom_img.set_colorkey((255,255,255)) 80 | 81 | flower_img = pygame.image.load('tiles/objects/flower/fpop/fpop_0.png').convert() 82 | flower_img.set_colorkey((255,255,255)) 83 | 84 | bomber_img = pygame.image.load('tiles/objects/bomber/bomber_pop/bomber_pop_0.png').convert() 85 | bomber_img.set_colorkey((255,255,255)) 86 | 87 | bomb_img = pygame.image.load('tiles/objects/bomb/bomb_0.png').convert() 88 | bomb_img.set_colorkey((255,255,255)) 89 | 90 | explosion_img = pygame.image.load('tiles/objects/explosion/explosion_0.png').convert() 91 | explosion_img.set_colorkey((255,255,255)) 92 | 93 | fireball_img = pygame.image.load('tiles/objects/fireball/fireball_0.png').convert() 94 | fireball_img.set_colorkey((255,255,255)) 95 | 96 | coin_img = pygame.image.load('tiles/objects/coin/coin_0.png').convert() 97 | coin_img.set_colorkey((255,255,255)) 98 | 99 | coin_bounce_img = pygame.image.load('tiles/objects/coin_bounce/coin_bounce_0.png').convert() 100 | coin_bounce_img.set_colorkey((255,255,255)) 101 | 102 | flag_img = pygame.image.load('tiles/objects/flag.png').convert() 103 | flag_img.set_colorkey((255,255,255)) 104 | 105 | brick_img = pygame.image.load('tiles/blocks/brick/brick/brick_0.png') 106 | broken_brick_img = pygame.image.load('tiles/blocks/broken.png') 107 | block_img = pygame.image.load('tiles/blocks/block.png') 108 | 109 | pipe0_img = pygame.image.load('tiles/pipes/pipe_0.png').convert() 110 | pipe0_img.set_colorkey((255,255,255)) 111 | pipe1_img = pygame.image.load('tiles/pipes/pipe_1.png').convert() 112 | pipe1_img.set_colorkey((255,255,255)) 113 | pipe2_img = pygame.image.load('tiles/pipes/pipe_2.png').convert() 114 | pipe2_img.set_colorkey((255,255,255)) 115 | 116 | cloud0_img = pygame.image.load('tiles/background/cloud_0.png').convert() 117 | cloud0_img.set_colorkey((255,255,255)) 118 | grass0_img = pygame.image.load('tiles/background/grass_0.png').convert() 119 | grass0_img.set_colorkey((255,255,255)) 120 | hill0_img = pygame.image.load('tiles/background/hill_0.png').convert() 121 | hill0_img.set_colorkey((255,255,255)) 122 | hill1_img = pygame.image.load('tiles/background/hill_1.png').convert() 123 | hill1_img.set_colorkey((255,255,255)) 124 | castle0_img = pygame.image.load('tiles/background/castle_0.png').convert() 125 | castle0_img.set_colorkey((255,255,255)) 126 | 127 | what_block_img = pygame.image.load('tiles/blocks/what/what_0.png').convert() 128 | what_block_img.set_colorkey((255,255,255)) 129 | 130 | empty_what_block_img = pygame.image.load('tiles/blocks/empty.png') 131 | 132 | goomba_img = pygame.image.load('tiles/enemy/goomba/goomba_run/goomba_run_0.png').convert() 133 | goomba_img.set_colorkey((255,255,255)) 134 | koopa_img = pygame.image.load('tiles/enemy/koopa/koopa_run/koopa_run_0.png').convert() 135 | koopa_img.set_colorkey((255,255,255)) 136 | ##################################################################################### 137 | 138 | #load game sounds 139 | 140 | small_jump_sound = pygame.mixer.Sound('sounds/Jump_small.wav') 141 | big_jump_sound = pygame.mixer.Sound('sounds/Jump_big.wav') 142 | coin_sound = pygame.mixer.Sound('sounds/coin.ogg') 143 | stomp_sound = pygame.mixer.Sound('sounds/stomp.wav') 144 | bump_sound = pygame.mixer.Sound('sounds/bump.wav') 145 | brick_break_sound = pygame.mixer.Sound('sounds/brick_break.wav') 146 | die_sound = pygame.mixer.Sound('sounds/die.wav') 147 | powerup_appear = pygame.mixer.Sound('sounds/powerup_appear.wav') 148 | powerup = pygame.mixer.Sound('sounds/powerup.wav') 149 | powerdown = pygame.mixer.Sound('sounds/powerdown.wav') 150 | fireball_sound = pygame.mixer.Sound('sounds/fireball.ogg') 151 | kick_sound = pygame.mixer.Sound('sounds/kick.ogg') 152 | ###################################################################################### 153 | 154 | pygame.mixer.music.load('music/main.ogg') #load music from files 155 | pygame.mixer.music.play() #play the loaded music 156 | 157 | 158 | #RGB Tuples values. 159 | 160 | blue = (146,244,255) 161 | transparent = (255,255,255) 162 | skyblue = (107,140,255) 163 | red = 255, 0, 0 164 | green = 0,255, 0 165 | blue = 0, 0,255 166 | 167 | 168 | #Game Variables.Almost all variables need to be reset for 169 | #so a nextlevel boolean will be used to check for re-initialization 170 | 171 | 172 | IsGameOver = False 173 | blockinput = False 174 | 175 | player_x = 96 176 | player_y = 128 177 | freeze_y = 0 178 | speedMultiplier = 1 179 | player_size = 'small' 180 | 181 | coin_frame = 0 182 | coin_action = 'coin' 183 | 184 | score = 0 185 | coins = 0 186 | 187 | player_flash = False 188 | beingsmall = False 189 | beingbig = False 190 | beingbomber = False 191 | beingfire = False 192 | moving_left = False 193 | moving_right = False 194 | isFreeFalling = False 195 | isinvincible = False 196 | 197 | NextLevel = False 198 | 199 | scrollx = 0 200 | scrolly = 0 201 | 202 | true_scrollx = 0 203 | true_scrolly = 0 204 | 205 | level = 0 206 | 207 | #level,scroll and game objects lists 208 | 209 | levels = [] 210 | scroll = [] 211 | flags = [] 212 | game_map = [] 213 | coin_objects = [] 214 | what_blocks = [] 215 | empty_what_blocks = [] 216 | mushroom_blocks = [] 217 | mushrooms = [] 218 | flowers = [] 219 | fireballs = [] 220 | bombers = [] 221 | bombs = [] 222 | bricks = [] 223 | goombas = [] 224 | goombas_kill = [] 225 | koopas = [] 226 | koopas_kill = [] 227 | tile_rects_indexes = [] 228 | broken_bricks = [] 229 | Labels = [] 230 | labels_kill = [] 231 | coin_bounces = [] 232 | explosions = [] 233 | path = 'map' 234 | 235 | 236 | air_timer = 0 237 | vertical_momentum = 0 238 | 239 | 240 | player_rect = pygame.rect.Rect(player_x,player_y,16,16) # player collision rectangle 241 | 242 | 243 | 244 | #Game functions 245 | 246 | def loadlevels(path): # create the list of playable levels 247 | level = 0 248 | while True: 249 | try: 250 | f = open(path + str(level) + '.txt','r') 251 | f.close() 252 | levels.append(path + str(level) + '.txt') 253 | level += 1 254 | except: 255 | break 256 | 257 | def load_map(path): # load the game map according to level aray 258 | f = open(path) 259 | data = f.read() 260 | f.close() 261 | data = data.split('\n') 262 | gamemap = [] 263 | for row in data: 264 | game_map.append(list(row)) 265 | return game_map 266 | 267 | global animation_frames 268 | animation_frames = {} # anim dict 269 | 270 | def load_animation(path,frame_durations): # Load animation and create a 271 | global animation_frames # dictionary of images for each 272 | animation_name = path.split('/')[-1] # animation types 273 | animation_frame_data = [] 274 | n = 0 # counter 275 | for frame in frame_durations: # add same frame multiple given times 276 | animation_frame_id = animation_name + '_' + str(n) # load the name 277 | img_loc = path + '/' + animation_frame_id + '.png' # get location 278 | animation_image = pygame.image.load(img_loc).convert() # load file 279 | animation_image.set_colorkey((255,255,255))# make transparent 280 | animation_frames[animation_frame_id] = animation_image.copy() # copy array 281 | for i in range(frame): 282 | animation_frame_data.append(animation_frame_id) 283 | n += 1 284 | return animation_frame_data 285 | 286 | def change_action(action_var,frame,new_value): #change animation 287 | if action_var != new_value: 288 | action_var = new_value 289 | frame = 0 290 | return action_var,frame 291 | 292 | 293 | def collision_test(rect,tiles): # test collision between obj & tiles 294 | 295 | hit_list = [] 296 | 297 | for tile in tiles: 298 | 299 | if rect.colliderect(tile): 300 | hit_list.append(tile) 301 | 302 | return hit_list 303 | 304 | def move(rect,movement,tiles): # return dict for possible movement directions 305 | collision_types = {'top':False,'bottom':False,'right':False,'left':False} 306 | rect.x += movement[0] 307 | hit_list = collision_test(rect,tiles) 308 | for tile in hit_list: 309 | if movement[0] > 0: 310 | rect.right = tile.left 311 | collision_types['right'] = True 312 | elif movement[0] < 0: 313 | rect.left = tile.right 314 | collision_types['left'] = True 315 | rect.y += movement[1] 316 | hit_list = collision_test(rect,tiles) 317 | for tile in hit_list: 318 | if movement[1] > 0: 319 | rect.bottom = tile.top 320 | collision_types['bottom'] = True 321 | elif movement[1] < 0: 322 | rect.top = tile.bottom 323 | collision_types['top'] = True 324 | return rect, collision_types 325 | 326 | animation_database = {} # animation database dict 327 | 328 | #Load player's animations 329 | animation_database['bomberidle'] = load_animation('player_animations/bomber/bomberidle',[7]) 330 | animation_database['bomberrun'] = load_animation('player_animations/bomber/bomberrun',[7,7,7]) 331 | animation_database['bomberjump'] = load_animation('player_animations/bomber/bomberjump',[7]) 332 | animation_database['bomberdie'] = load_animation('player_animations/bomber/bomberdie',[7]) 333 | 334 | animation_database['firetobomber'] = load_animation('player_animations/bomber/firetobomber',[22,22]) 335 | animation_database['bombertofire'] = load_animation('player_animations/bomber/bombertofire',[22,22]) 336 | 337 | animation_database['fireidle'] = load_animation('player_animations/fire/fireidle',[7]) 338 | animation_database['firerun'] = load_animation('player_animations/fire/firerun',[7,7,7]) 339 | animation_database['firejump'] = load_animation('player_animations/fire/firejump',[7]) 340 | animation_database['firedie'] = load_animation('player_animations/fire/firedie',[7]) 341 | 342 | animation_database['bigtofire'] = load_animation('player_animations/fire/bigtofire',[22,22]) 343 | animation_database['firetobig'] = load_animation('player_animations/fire/firetobig',[22,22]) 344 | 345 | animation_database['bigrun'] = load_animation('player_animations/big/bigrun',[7,7,7]) 346 | animation_database['bigjump'] = load_animation('player_animations/big/bigjump',[7]) 347 | animation_database['bigdie'] = load_animation('player_animations/big/bigdie',[7]) 348 | animation_database['bigidle'] = load_animation('player_animations/big/bigidle',[7]) 349 | animation_database['big_to_small'] = load_animation('player_animations/big/big_to_small',[22,22]) 350 | animation_database['small_to_big'] = load_animation('player_animations/small/small_to_big',[22,22]) 351 | animation_database['smallrun'] = load_animation('player_animations/small/run',[7,7,7]) 352 | animation_database['smalljump'] = load_animation('player_animations/small/jump',[7]) 353 | animation_database['smalldie'] = load_animation('player_animations/small/die',[7]) 354 | animation_database['smallidle'] = load_animation('player_animations/small/idle',[7]) 355 | animation_database['smallflag'] = load_animation('player_animations/small/flag',[7]) 356 | 357 | #Load enemy's animations 358 | animation_database['goomba_run'] = load_animation('tiles/enemy/goomba/goomba_run',[7,7]) 359 | animation_database['goomba_die'] = load_animation('tiles/enemy/goomba/goomba_die',[7]) 360 | animation_database['koopa_run'] = load_animation('tiles/enemy/koopa/koopa_run',[7,7]) 361 | animation_database['koopa_die'] = load_animation('tiles/enemy/koopa/koopa_die',[7]) 362 | 363 | #Load object animations 364 | animation_database['what'] = load_animation('tiles/blocks/what',[14,14,14,14]) 365 | animation_database['brick'] = load_animation('tiles/blocks/brick/brick',[4,4,4,4,4,4,4]) 366 | animation_database['brick_idle'] = load_animation('tiles/blocks/brick/brick_idle',[7]) 367 | animation_database['fireball'] = load_animation('tiles/objects/fireball',[7,7,7,7]) 368 | #Load consumables animations 369 | animation_database['coin'] = load_animation('tiles/objects/coin',[7,7,7,7,7]) 370 | animation_database['coin_bounce'] = load_animation('tiles/objects/coin_bounce',[2,2,2,2,2,2,2,2]) 371 | animation_database['pop'] = load_animation('tiles/objects/mushroom/pop',[7,7,7,7]) 372 | animation_database['mushroom'] = load_animation('tiles/objects/mushroom',[7]) 373 | animation_database['flower'] = load_animation('tiles/objects/flower/flower',[7,7,7,7]) 374 | animation_database['fpop'] = load_animation('tiles/objects/flower/fpop',[7,7,7,7,7]) 375 | animation_database['bomber_pop'] = load_animation('tiles/objects/bomber/bomber_pop',[7,7,7,7]) 376 | animation_database['bomber'] = load_animation('tiles/objects/bomber/bomber',[7,7,7,7]) 377 | animation_database['bomb'] = load_animation('tiles/objects/bomb',[7,7,7,7]) 378 | animation_database['explosion'] = load_animation('tiles/objects/explosion',[2,2,3,3,4,4,4,4]) 379 | 380 | global player_action 381 | global player_frame 382 | player_action = 'idle' # Player current action 383 | player_frame = 0 # Player frame 384 | player_flip = False # Flip player? 385 | 386 | 387 | def gameOver(): # Play dying animation 388 | global player_action 389 | global player_frame 390 | player_action,player_frame = change_action(player_action,player_frame,'smalldie') 391 | 392 | 393 | 394 | 395 | ############################################################ 396 | 397 | #Classes of objects,consumables and enemies. 398 | #I might improve this by including sub-classes. 399 | 400 | class Flag(): 401 | def __init__(self, loc): 402 | self.loc = loc 403 | 404 | def render(self, surf): 405 | surf.blit(flag_img, (self.loc[0] - scroll[0], self.loc[1] - scroll[1])) 406 | 407 | def get_rect(self): 408 | return pygame.Rect(self.loc[0], self.loc[1], 16, 168) 409 | 410 | def collision_test(self, rect): 411 | flag_rect = self.get_rect() 412 | return flag_rect.colliderect(rect) 413 | 414 | class Coin_obj(): 415 | def __init__(self, loc): 416 | self.loc = loc 417 | 418 | def render(self, surf): 419 | surf.blit(coin_img, (self.loc[0] - scroll[0], self.loc[1] - scroll[1])) 420 | 421 | def get_rect(self): 422 | return pygame.Rect(self.loc[0], self.loc[1], 16, 16) 423 | 424 | def collision_test(self, rect): 425 | coin_rect = self.get_rect() 426 | return coin_rect.colliderect(rect) 427 | 428 | class Coin_bounce(): 429 | def __init__(self, loc): 430 | self.loc = [loc[0],loc[1]-16] 431 | self.frame = 0 432 | self.img = coin_bounce_img 433 | self.img_id = 0 434 | self.action = 'coin_bounce' 435 | self.justcreated = True 436 | self.frameloops = 0 437 | 438 | def render(self, surf): 439 | surf.blit(self.img, (self.loc[0] - scroll[0], self.loc[1] - scroll[1])) 440 | 441 | def get_rect(self): 442 | return pygame.Rect(self.loc[0], self.loc[1], 16, 16) 443 | 444 | def collision_test(self, rect): 445 | coin_rect = self.get_rect() 446 | return coin_rect.colliderect(rect) 447 | 448 | def animate(self, coin_action): 449 | 450 | if self.frame >= len(animation_database[coin_action]): 451 | self.frame = 0 452 | self.justcreated = False 453 | self.frameloops += 1 454 | self.img_id = animation_database[coin_action][self.frame] 455 | self.img = animation_frames[self.img_id] 456 | self.frame += 1 457 | 458 | class Mushroom(): 459 | def __init__(self, loc): 460 | self.loc = [loc[0],loc[1]-16] 461 | self.img_id = 0 462 | self.img = mushroom_img 463 | self.frame = 0 464 | self.justcreated = True 465 | self.movement = [0,0] 466 | self.direction = 'right' 467 | self.isAlive = True 468 | self.vertical_momentum = 3 469 | self.movementSpeed = 0.5 470 | self.collision_types = {'top':False,'bottom':False,'right':False,'left':False} 471 | self.rect = self.get_rect() 472 | 473 | def render(self, surf): 474 | self.loc[0] = self.rect.x 475 | self.loc[1] = self.rect.y 476 | surf.blit(self.img, (self.loc[0] - scroll[0], self.loc[1] - scroll[1])) 477 | 478 | def get_rect(self): 479 | return pygame.Rect(self.loc[0], self.loc[1], 16, 16) 480 | 481 | def collision_test(self, rect): 482 | mushroom_rect = self.get_rect() 483 | return mushroom_rect.colliderect(rect) 484 | 485 | def animate(self, mushroom_action): 486 | if self.frame >= len(animation_database[mushroom_action]): 487 | self.frame = 0 488 | self.justcreated = False 489 | self.img_id = animation_database[mushroom_action][self.frame] 490 | self.img = animation_frames[self.img_id] 491 | self.frame += 1 492 | 493 | def move(self): 494 | self.movement = [0,0] 495 | if self.direction == 'left' and self.isAlive: 496 | self.movement[0] -= 1 497 | if self.direction == 'right' and self.isAlive: 498 | self.movement[0] += 1 499 | 500 | mushroom.movement[1] += mushroom.vertical_momentum 501 | mushroom.vertical_momentum += 0.2 502 | if mushroom.vertical_momentum > 3: 503 | mushroom.vertical_momentum = 3 504 | 505 | class Flower(): 506 | def __init__(self, loc): 507 | self.loc = [loc[0],loc[1]-16] 508 | self.img_id = 0 509 | self.img = flower_img 510 | self.frame = 0 511 | self.justcreated = True 512 | self.isAlive = True 513 | self.rect = self.get_rect() 514 | 515 | def render(self, surf): 516 | surf.blit(self.img, (self.loc[0] - scroll[0], self.loc[1] - scroll[1])) 517 | 518 | def get_rect(self): 519 | return pygame.Rect(self.loc[0], self.loc[1], 16, 16) 520 | 521 | def collision_test(self, rect): 522 | flower_rect = self.get_rect() 523 | return flower_rect.colliderect(rect) 524 | 525 | def animate(self, flower_action): 526 | if self.frame >= len(animation_database[flower_action]): 527 | self.frame = 0 528 | self.justcreated = False 529 | self.img_id = animation_database[flower_action][self.frame] 530 | self.img = animation_frames[self.img_id] 531 | self.frame += 1 532 | 533 | class Bomber(): 534 | def __init__(self, loc): 535 | self.loc = [loc[0],loc[1]-16] 536 | self.img_id = 0 537 | self.img = bomber_img 538 | self.frame = 0 539 | self.justcreated = True 540 | self.isAlive = True 541 | self.rect = self.get_rect() 542 | 543 | def render(self, surf): 544 | surf.blit(self.img, (self.loc[0] - scroll[0], self.loc[1] - scroll[1])) 545 | 546 | def get_rect(self): 547 | return pygame.Rect(self.loc[0], self.loc[1], 16, 16) 548 | 549 | def collision_test(self, rect): 550 | bomber_rect = self.get_rect() 551 | return bomber_rect.colliderect(rect) 552 | 553 | def animate(self, bomber_action): 554 | if self.frame >= len(animation_database[bomber_action]): 555 | self.frame = 0 556 | self.justcreated = False 557 | self.img_id = animation_database[bomber_action][self.frame] 558 | self.img = animation_frames[self.img_id] 559 | self.frame += 1 560 | 561 | class Explosion(): 562 | def __init__(self, loc): 563 | self.loc = loc 564 | self.img_id = 0 565 | self.img = explosion_img 566 | self.frame = 0 567 | self.justcreated = True 568 | self.isAlive = True 569 | self.rect = self.get_rect() 570 | 571 | def render(self, surf): 572 | surf.blit(self.img, (self.loc[0] - scroll[0], self.loc[1] - scroll[1])) 573 | 574 | def get_rect(self): 575 | return pygame.Rect(self.loc[0], self.loc[1], 16, 16) 576 | 577 | def collision_test(self, rect): 578 | Explosion_rect = self.get_rect() 579 | return Explosion_rect.colliderect(rect) 580 | 581 | def animate(self, Explosion_action): 582 | if self.frame >= len(animation_database[Explosion_action]): 583 | self.frame = 0 584 | self.justcreated = False 585 | self.img_id = animation_database[Explosion_action][self.frame] 586 | self.img = animation_frames[self.img_id] 587 | self.frame += 1 588 | 589 | 590 | class Mushroom_block(): 591 | def __init__(self, loc): 592 | self.loc = loc 593 | self.img = what_block_img 594 | self.img_id = 0 595 | self.frame = 0 596 | self.vertical_momentum = 0.01 597 | self.rest_height = self.loc[1] 598 | self.rect = self.get_rect() 599 | self.y_vel = 0 600 | self.isbumping = False 601 | self.bumpingfinish = False 602 | 603 | def render(self, surf): 604 | 605 | surf.blit(self.img, (self.loc[0] - scroll[0], self.loc[1] - scroll[1])) 606 | 607 | def get_rect(self): 608 | return pygame.Rect(self.loc[0], self.loc[1], 16, 16) 609 | 610 | def collision_test(self, rect): 611 | mushroom_block_rect = self.get_rect() 612 | return mushroom_block_rect.colliderect(rect) 613 | 614 | def bump(self): 615 | if self.isbumping: # After mario bumps 616 | self.rect.y -= self.y_vel 617 | self.y_vel += self.vertical_momentum 618 | 619 | if self.rect.y <= (self.rest_height - 5): 620 | self.isbumping = False 621 | self.bumpingfinish = True 622 | self.rect.y = self.rest_height 623 | 624 | 625 | class What_block(): 626 | def __init__(self, loc): 627 | self.loc = loc 628 | self.img = what_block_img 629 | self.img_id = 0 630 | self.frame = 0 631 | self.vertical_momentum = 0.01 632 | self.rest_height = self.loc[1] 633 | self.rect = self.get_rect() 634 | self.y_vel = 0 635 | self.isbumping = False 636 | self.bumpingfinish = False 637 | 638 | def render(self, surf): 639 | self.loc[0] = self.rect.x 640 | self.loc[1] = self.rect.y 641 | surf.blit(self.img, (self.loc[0] - scroll[0], self.loc[1] - scroll[1])) 642 | 643 | def get_rect(self): 644 | return pygame.Rect(self.loc[0], self.loc[1], 16, 16) 645 | 646 | def collision_test(self, rect): 647 | what_block_rect = self.get_rect() 648 | return what_block_rect.colliderect(rect) 649 | 650 | def bump(self): 651 | if self.isbumping: # After mario bumps 652 | self.rect.y -= self.y_vel 653 | self.y_vel += self.vertical_momentum 654 | 655 | if self.rect.y <= (self.rest_height - 5): 656 | self.isbumping = False 657 | self.bumpingfinish = True 658 | self.rect.y = self.rest_height 659 | 660 | class Empty_what_block(): 661 | 662 | def __init__(self, loc): 663 | self.loc = loc 664 | 665 | def render(self, surf): 666 | surf.blit(empty_what_block_img, (self.loc[0] - scroll[0], self.loc[1] - scroll[1])) 667 | 668 | def get_rect(self): 669 | return pygame.Rect(self.loc[0], self.loc[1], 16, 16) 670 | 671 | def collision_test(self, rect): 672 | empty_block_rect = self.get_rect() 673 | return empty_block_rect.colliderect(rect) 674 | 675 | class Brick(): 676 | def __init__(self, loc, indexx): 677 | self.loc = loc 678 | self.img = brick_img 679 | self.img_id = 0 680 | self.frame = 0 681 | self.action = 'brick_idle' 682 | self.vertical_momentum = 0.01 683 | self.y_vel = 0 684 | self.rect = self.get_rect() 685 | self.destroyed = False 686 | self.indexx = indexx 687 | self.rest_height = self.loc[1] 688 | self.isbumping = False 689 | 690 | def render(self, surf): 691 | self.loc[0] = self.rect.x 692 | self.loc[1] = self.rect.y 693 | surf.blit(self.img, (self.loc[0] - scroll[0], self.loc[1] - scroll[1])) 694 | 695 | def get_rect(self): 696 | return pygame.Rect(self.loc[0], self.loc[1], 16, 16) 697 | 698 | def get_small_rect(self): 699 | return pygame.Rect(self.loc[0], self.loc[1], 16, 14) 700 | 701 | def collision_test(self, rect): 702 | brick_rect = self.get_rect() 703 | return brick_rect.colliderect(rect) 704 | 705 | def bump(self): 706 | 707 | if self.isbumping: # After mario bumps 708 | self.rect.y -= self.y_vel 709 | self.y_vel += self.vertical_momentum 710 | 711 | if self.rect.y < (self.rest_height - 8): 712 | self.isbumping = False 713 | self.rect.y = self.rest_height 714 | 715 | 716 | 717 | 718 | 719 | class Goomba(): 720 | def __init__(self, loc): 721 | self.loc = loc 722 | self.direction = 'left' 723 | self.vertical_momentum = 3 724 | self.movement = [0,0] 725 | self.img_id = 0 726 | self.img = goomba_img 727 | self.frame = 0 728 | self.isAlive = True 729 | self.movementSpeed = 0.5 730 | self.collision_types = {'top':False,'bottom':False,'right':False,'left':False} 731 | self.rect = self.get_rect() 732 | self.flip = False 733 | 734 | 735 | def render(self, surf): 736 | self.loc[0] = self.rect.x 737 | self.loc[1] = self.rect.y 738 | surf.blit(pygame.transform.flip(self.img, False, self.flip), (self.loc[0] - scroll[0], self.loc[1] - scroll[1])) 739 | 740 | def get_rect(self): 741 | return pygame.Rect(self.loc[0], self.loc[1], 16, 16) 742 | 743 | def collision_test(self, rect): 744 | goomba_rect = self.get_rect() 745 | return goomba_rect.colliderect(rect) 746 | 747 | def move(self): 748 | self.movement = [0,0] 749 | if self.direction == 'left' and self.isAlive: 750 | goomba.movement[0] -= 1 751 | if self.direction == 'right' and self.isAlive: 752 | goomba.movement[0] += 1 753 | goomba.movement[1] += goomba.vertical_momentum 754 | goomba.vertical_momentum += 0.2 755 | if goomba.vertical_momentum > 3: 756 | goomba.vertical_momentum = 3 757 | 758 | def animate(self, goomba_action): 759 | self.frame += 1 760 | if self.frame >= len(animation_database[goomba_action]): 761 | self.frame = 0 762 | self.img_id = animation_database[goomba_action][self.frame] 763 | self.img = animation_frames[self.img_id] 764 | 765 | class Koopa(): 766 | def __init__(self, loc): 767 | self.loc = loc 768 | self.direction = 'left' 769 | self.vertical_momentum = 3 770 | self.movement = [0,0] 771 | self.img_id = 0 772 | self.img = koopa_img 773 | self.frame = 0 774 | self.isAlive = True 775 | self.isstomped = False 776 | self.movementSpeed = 0.5 777 | self.collision_types = {'top':False,'bottom':False,'right':False,'left':False} 778 | self.rect = self.get_rect() 779 | self.flip = False 780 | self.action = 'koopa_run' 781 | self.xflip = True 782 | 783 | 784 | 785 | def render(self, surf): 786 | self.loc[0] = self.rect.x 787 | self.loc[1] = self.rect.y 788 | surf.blit(pygame.transform.flip(self.img, self.xflip, self.flip), (self.loc[0] - scroll[0], self.loc[1] - scroll[1])) 789 | 790 | def get_rect(self): 791 | if self.isAlive and not self.isstomped: 792 | return pygame.Rect(self.loc[0], self.loc[1], 16, 22) 793 | else: 794 | return pygame.Rect(self.loc[0], self.loc[1], 16, 16) 795 | 796 | def collision_test(self, rect): 797 | koopa_rect = self.get_rect() 798 | return koopa_rect.colliderect(rect) 799 | 800 | def move(self): 801 | self.movement = [0,0] 802 | if self.direction == 'left' and self.isAlive and not self.isstomped: 803 | self.movement[0] -= 1 804 | self.xflip = False 805 | if self.direction == 'right' and self.isAlive and not self.isstomped: 806 | self.movement[0] += 1 807 | self.xflip = True 808 | self.movement[1] += self.vertical_momentum 809 | self.vertical_momentum += 0.2 810 | if self.vertical_momentum > 3: 811 | self.vertical_momentum = 3 812 | 813 | def animate(self, koopa_action): 814 | self.frame += 1 815 | if self.frame >= len(animation_database[koopa_action]): 816 | self.frame = 0 817 | self.img_id = animation_database[koopa_action][self.frame] 818 | self.img = animation_frames[self.img_id] 819 | 820 | 821 | class Fireball(): 822 | def __init__(self, loc , direction): 823 | self.loc = loc 824 | self.direction = direction 825 | self.vertical_momentum = -2 826 | self.movement = [0,0] 827 | self.img_id = 0 828 | self.img = fireball_img 829 | self.frame = 0 830 | self.isAlive = True 831 | self.bounces = 0 832 | self.movementSpeed = 3 833 | self.collision_types = {'top':False,'bottom':False,'right':False,'left':False} 834 | self.rect = self.get_rect() 835 | 836 | 837 | def render(self, surf): 838 | self.loc[0] = self.rect.x 839 | self.loc[1] = self.rect.y 840 | surf.blit(self.img, (self.loc[0] - scroll[0], self.loc[1] - scroll[1])) 841 | 842 | def get_rect(self): 843 | return pygame.Rect(self.loc[0], self.loc[1], 8, 8) 844 | 845 | def collision_test(self, rect): 846 | fireball_rect = self.get_rect() 847 | return fireball_rect.colliderect(rect) 848 | 849 | def move(self): 850 | self.movement = [0,0] 851 | if self.direction == 'left' and self.isAlive: 852 | self.movement[0] -= self.movementSpeed 853 | if self.direction == 'right' and self.isAlive: 854 | self.movement[0] += self.movementSpeed 855 | self.movement[1] += self.vertical_momentum 856 | 857 | self.vertical_momentum += 0.2 858 | if self.vertical_momentum > 3: 859 | self.vertical_momentum = 3 860 | 861 | def animate(self, fireball_action): 862 | self.frame += 1 863 | if self.frame >= len(animation_database[fireball_action]): 864 | self.frame = 0 865 | self.img_id = animation_database[fireball_action][self.frame] 866 | self.img = animation_frames[self.img_id] 867 | 868 | class Bomb(): 869 | def __init__(self, loc , direction): 870 | self.loc = loc 871 | self.direction = direction 872 | self.vertical_momentum = -2 873 | self.movement = [0,0] 874 | self.img_id = 0 875 | self.img = bomb_img 876 | self.frame = 0 877 | self.isAlive = True 878 | self.bounces = 0 879 | self.movementSpeed = 3 880 | self.collision_types = {'top':False,'bottom':False,'right':False,'left':False} 881 | self.rect = self.get_rect() 882 | 883 | 884 | def render(self, surf): 885 | self.loc[0] = self.rect.x 886 | self.loc[1] = self.rect.y 887 | surf.blit(self.img, (self.loc[0] - scroll[0], self.loc[1] - scroll[1])) 888 | 889 | def get_rect(self): 890 | return pygame.Rect(self.loc[0], self.loc[1], 8, 8) 891 | 892 | def collision_test(self, rect): 893 | bomb_rect = self.get_rect() 894 | return bomb_rect.colliderect(rect) 895 | 896 | def move(self): 897 | self.movement = [0,0] 898 | if self.direction == 'left' and self.isAlive: 899 | self.movement[0] -= self.movementSpeed 900 | if self.direction == 'right' and self.isAlive: 901 | self.movement[0] += self.movementSpeed 902 | self.movement[1] += self.vertical_momentum 903 | 904 | self.vertical_momentum += 0.2 905 | if self.vertical_momentum > 3: 906 | self.vertical_momentum = 3 907 | 908 | def animate(self, bomb_action): 909 | self.frame += 1 910 | if self.frame >= len(animation_database[bomb_action]): 911 | self.frame = 0 912 | self.img_id = animation_database[bomb_action][self.frame] 913 | self.img = animation_frames[self.img_id] 914 | 915 | 916 | 917 | ########## Game Main Functions ############################## 918 | 919 | loadlevels('levels/map') 920 | load_map(levels[0]) # load the map as tilemap 921 | 922 | #Create object\instances from classes according to loaded tilemap 923 | 924 | def loadtiles(): 925 | idex = [] 926 | global tile_rects 927 | tile_rects = [] 928 | indexx = 0 929 | y = 0 930 | for layer in game_map: 931 | x = 0 932 | for tile in layer: 933 | if tile == '@': 934 | player_rect.x = x*16 935 | player_rect.y = y*16 936 | elif tile == 'c': 937 | coin_objects.append(Coin_obj((x*16,y*16))) 938 | indexx +=1 939 | elif tile == 'x': 940 | goombas.append(Goomba([x*16,y*16])) 941 | elif tile == 'k': 942 | koopas.append(Koopa([x*16,y*16])) 943 | indexx +=1 944 | elif tile == '?': 945 | what_blocks.append(What_block([x*16,y*16])) 946 | indexx +=1 947 | elif tile == 'm': 948 | mushroom_blocks.append(Mushroom_block([x*16,y*16])) 949 | 950 | 951 | indexx +=1 952 | elif tile == 'b': 953 | bricks.append(Brick([x*16,y*16],indexx)) 954 | 955 | indexx +=1 956 | elif tile == 'F': 957 | flags.append(Flag([x*16,y*16-152])) 958 | x += 1 959 | y += 1 960 | 961 | 962 | def render_map(): #Render the current map (Repeat every frame) 963 | #Rendering map from tilemap 964 | tile_rects.clear() 965 | y = 0 966 | for layer in game_map: 967 | x = 0 968 | for tile in layer: 969 | 970 | if tile == 'b':#If the current brick is broken dont add colliders 971 | brickrect = pygame.Rect(x*16,(y*16),16,14) 972 | if brickrect not in broken_bricks: 973 | tile_rects.append(brickrect) 974 | else: 975 | tile_rects.append(pygame.Rect(x*16,(y*16)+300,1,1)) 976 | 977 | if tile == 'a': 978 | display.blit(broken_brick_img,(x*16-scrollx,y*16-scrolly)) 979 | if tile == 'l': 980 | display.blit(block_img,(x*16-scrollx,y*16-scrolly)) 981 | 982 | if tile == 'q': 983 | display.blit(pipe0_img,(x*16-scrollx,(y*16)-16-scrolly)) 984 | tile_rects.append(pygame.Rect(x*16,(y*16)-16,32,32)) 985 | if tile == 'w': 986 | display.blit(pipe1_img,(x*16-scrollx,(y*16)-32-scrolly)) 987 | tile_rects.append(pygame.Rect(x*16,(y*16)-32,32,48)) 988 | if tile == 'e': 989 | display.blit(pipe2_img,(x*16-scrollx,(y*16)-48-scrolly)) 990 | tile_rects.append(pygame.Rect(x*16,(y*16)-48,32,64)) 991 | 992 | if tile == 'Q': 993 | display.blit(cloud0_img,(x*16-scrollx,(y*16)-scrolly)) 994 | if tile == 'W': 995 | display.blit(grass0_img,(x*16-scrollx,(y*16)-scrolly)) 996 | if tile == 'E': 997 | display.blit(hill0_img,(x*16-scrollx,(y*16)-16-scrolly)) 998 | if tile == 'R': 999 | display.blit(hill1_img,(x*16-scrollx,(y*16)-scrolly)) 1000 | if tile == 'O': 1001 | display.blit(castle0_img,(x*16-scrollx,(y*16)-scrolly)) 1002 | 1003 | if tile not in ['@',' ','0','c','x','?','b','m','q', 1004 | 'w','e','Q','W','E','R','O','F','k']: #Add tile colliders if jpt is given 1005 | tile_rects.append(pygame.Rect(x*16,y*16,16,16)) 1006 | if tile == '?': 1007 | tile_rects.append(pygame.Rect(x*16,(y*16),16,14)) 1008 | if tile == 'm': 1009 | tile_rects.append(pygame.Rect(x*16,(y*16),16,14)) 1010 | if tile == 'F': 1011 | tile_rects.append(pygame.Rect(x*16,(y*16),16,16)) 1012 | 1013 | 1014 | x += 1 1015 | y += 1 1016 | 1017 | 1018 | screen.fill(blue) 1019 | pygame.display.update() 1020 | pygame.key.set_repeat(500,30) 1021 | 1022 | 1023 | loadtiles() 1024 | 1025 | while not IsGameOver or True: # Main game loop 1026 | 1027 | if player_rect.y > 216: 1028 | IsGameOver = True 1029 | pygame.mixer.music.stop() 1030 | die_sound.play() 1031 | pygame.time.delay(3000) 1032 | level -= 1 1033 | NextLevel = True 1034 | 1035 | if NextLevel: 1036 | 1037 | pygame.time.delay(5000) 1038 | 1039 | IsGameOver = False 1040 | blockinput = False 1041 | 1042 | freeze_y = 0 1043 | 1044 | coin_frame = 0 1045 | coin_action = 'coin' 1046 | 1047 | score = 0 1048 | 1049 | player_flash = False 1050 | beingsmall = False 1051 | beingbig = False 1052 | beinggod = False 1053 | moving_left = False 1054 | moving_right = False 1055 | isFreeFalling = False 1056 | 1057 | NextLevel = False 1058 | 1059 | scrollx = 0 1060 | scrolly = 0 1061 | 1062 | true_scrollx = 0 1063 | true_scrolly = 0 1064 | 1065 | level = 0 1066 | 1067 | 1068 | 1069 | #level,scroll and game objects lists 1070 | pygame.mixer.music.load('music/main.ogg') #load music from files 1071 | pygame.mixer.music.play() #play the loaded music 1072 | 1073 | 1074 | levels = [] 1075 | scroll = [] 1076 | flags = [] 1077 | game_map = [] 1078 | coin_objects = [] 1079 | what_blocks = [] 1080 | empty_what_blocks = [] 1081 | mushroom_blocks = [] 1082 | mushrooms = [] 1083 | flowers = [] 1084 | fireballs = [] 1085 | bricks = [] 1086 | goombas = [] 1087 | goombas_kill = [] 1088 | tile_rects_indexes = [] 1089 | broken_bricks = [] 1090 | tile_rects = [] 1091 | koopas = [] 1092 | koopas_kill = [] 1093 | 1094 | pygame.mixer.music.load('music/main.ogg') 1095 | pygame.mixer.music.play() 1096 | level += 1 1097 | 1098 | air_timer = 0 1099 | vertical_momentum = 0 1100 | 1101 | if level > len(levels): 1102 | pygame.mixer.music.stop() 1103 | display.fill((0,0,0)) 1104 | scorelabel = myfont.render('GAME OVER', 1, (255,255,255)) 1105 | display.blit(scorelabel, (100,100)) 1106 | 1107 | loadlevels('levels/map') 1108 | load_map(levels[level]) 1109 | loadtiles() 1110 | 1111 | display.fill(skyblue)# fill the background with sky blue 1112 | 1113 | true_scrollx += ((player_rect.x-true_scrollx) - 152)/15 #scrolling 1114 | true_scrolly += ((player_rect.y-true_scrolly) - 106)/15 #scrolling 1115 | 1116 | scrollx = int(true_scrollx) #scrolling x , camera following player along x axis 1117 | scrolly = 16 #scrolling y, leaving this off for supermario bros original scrolling 1118 | 1119 | scroll = [scrollx,scrolly] #scrolling 1120 | 1121 | render_map() #draw the whole map on screen 1122 | 1123 | scorelabel = myfont.render('SCORE:' + str(score), 1, (255,255,255)) 1124 | display.blit(scorelabel, (240,10)) 1125 | fpslabel = myfont.render('FPS:' + str(int(clock.get_fps())), 1, (255,255,255)) 1126 | display.blit(fpslabel, (250,20)) 1127 | 1128 | # Movement and Gravity 1129 | 1130 | player_movement = [0,0] 1131 | if moving_right == True: 1132 | player_movement[0] += 2 * speedMultiplier 1133 | if moving_left == True: 1134 | player_movement[0] -= 2 * speedMultiplier 1135 | player_movement[1] += vertical_momentum 1136 | vertical_momentum += 0.2 1137 | 1138 | 1139 | #Handle Player Animation 1140 | if NextLevel: 1141 | player_action,player_frame = change_action(player_action,player_frame,'smallflag') 1142 | 1143 | elif player_size == 'small': 1144 | if IsGameOver: 1145 | player_action,player_frame = change_action(player_action,player_frame,'smalldie') 1146 | elif beingsmall: 1147 | player_action,player_frame = change_action(player_action,player_frame,'big_to_small') 1148 | if not player_flash: 1149 | player_flash = True 1150 | else: 1151 | player_flash = False 1152 | 1153 | elif isFreeFalling == True: 1154 | player_action,player_frame = change_action(player_action,player_frame,'smalljump') 1155 | 1156 | elif player_movement[0] == 0: 1157 | player_action,player_frame = change_action(player_action,player_frame,'smallidle') 1158 | 1159 | elif player_movement[0] > 0: 1160 | player_flip = False 1161 | player_action,player_frame = change_action(player_action,player_frame,'smallrun') 1162 | 1163 | elif player_movement[0] < 0: 1164 | player_flip = True 1165 | player_action,player_frame = change_action(player_action,player_frame,'smallrun') 1166 | 1167 | elif player_size == 'big': 1168 | 1169 | if IsGameOver: 1170 | player_action,player_frame = change_action(player_action,player_frame,'bigdie') 1171 | 1172 | elif beingbig: 1173 | vertical_momentum = 0 1174 | player_rect.y = freeze_y 1175 | player_action,player_frame = change_action(player_action,player_frame,'small_to_big') 1176 | if not player_flash: 1177 | player_flash = True 1178 | else: 1179 | player_flash = False 1180 | isinvincible = False 1181 | 1182 | elif beingsmall: 1183 | vertical_momentum = -2 1184 | player_action,player_frame = change_action(player_action,player_frame,'firetobig') 1185 | if not player_flash: 1186 | player_flash = True 1187 | else: 1188 | player_flash = False 1189 | isinvincible = False 1190 | 1191 | elif isFreeFalling == True: 1192 | player_action,player_frame = change_action(player_action,player_frame,'bigjump') 1193 | 1194 | elif player_movement[0] == 0: 1195 | player_action,player_frame = change_action(player_action,player_frame,'bigidle') 1196 | 1197 | elif player_movement[0] > 0: 1198 | player_flip = False 1199 | player_action,player_frame = change_action(player_action,player_frame,'bigrun') 1200 | 1201 | elif player_movement[0] < 0: 1202 | player_flip = True 1203 | player_action,player_frame = change_action(player_action,player_frame,'bigrun') 1204 | 1205 | elif player_size == 'fire': 1206 | 1207 | if IsGameOver: 1208 | player_action,player_frame = change_action(player_action,player_frame,'firedie') 1209 | 1210 | elif beingfire: 1211 | vertical_momentum = 0 1212 | player_rect.y = freeze_y 1213 | player_action,player_frame = change_action(player_action,player_frame,'bigtofire') 1214 | if not player_flash: 1215 | player_flash = True 1216 | else: 1217 | player_flash = False 1218 | isinvincible = False 1219 | 1220 | elif isFreeFalling == True: 1221 | player_action,player_frame = change_action(player_action,player_frame,'firejump') 1222 | 1223 | elif player_movement[0] == 0: 1224 | player_action,player_frame = change_action(player_action,player_frame,'fireidle') 1225 | 1226 | elif player_movement[0] > 0: 1227 | player_flip = False 1228 | player_action,player_frame = change_action(player_action,player_frame,'firerun') 1229 | 1230 | elif player_movement[0] < 0: 1231 | player_flip = True 1232 | player_action,player_frame = change_action(player_action,player_frame,'firerun') 1233 | 1234 | elif player_size == 'bomber': 1235 | 1236 | if IsGameOver: 1237 | player_action,player_frame = change_action(player_action,player_frame,'bomberdie') 1238 | 1239 | elif beingbomber: 1240 | vertical_momentum = 0 1241 | player_rect.y = freeze_y 1242 | player_action,player_frame = change_action(player_action,player_frame,'firetobomber') 1243 | if not player_flash: 1244 | player_flash = True 1245 | else: 1246 | player_flash = False 1247 | isinvincible = False 1248 | 1249 | elif isFreeFalling == True: 1250 | player_action,player_frame = change_action(player_action,player_frame,'bomberjump') 1251 | 1252 | elif player_movement[0] == 0: 1253 | player_action,player_frame = change_action(player_action,player_frame,'bomberidle') 1254 | 1255 | elif player_movement[0] > 0: 1256 | player_flip = False 1257 | player_action,player_frame = change_action(player_action,player_frame,'bomberrun') 1258 | 1259 | elif player_movement[0] < 0: 1260 | player_flip = True 1261 | player_action,player_frame = change_action(player_action,player_frame,'bomberrun') 1262 | 1263 | player_rect,collisions = move(player_rect,player_movement,tile_rects) #Check player collision 1264 | 1265 | if collisions['bottom'] == True and not IsGameOver: 1266 | air_timer = 0 1267 | vertical_momentum = 0 1268 | isFreeFalling = False 1269 | if collisions['top'] == True and not IsGameOver: 1270 | vertical_momentum = 0 1271 | isFreeFalling = False 1272 | if vertical_momentum > 3: 1273 | vertical_momentum = 3 1274 | else: 1275 | air_timer += 1 1276 | 1277 | player_frame += 1 1278 | if player_frame >= len(animation_database[player_action]): 1279 | player_frame = 0 1280 | beingsmall = False 1281 | beingbig = False 1282 | beingfire = False 1283 | beingbomber = False 1284 | 1285 | player_img_id = animation_database[player_action][player_frame] 1286 | player_img = animation_frames[player_img_id] 1287 | 1288 | if not player_flash: 1289 | display.blit(pygame.transform.flip(player_img,player_flip,False),(player_rect.x - scrollx,player_rect.y - scrolly)) # player render 1290 | 1291 | ########################################################### 1292 | 1293 | #Objects and Enemies processing. 1294 | coin_frame += 1 1295 | if coin_frame >= len(animation_database[coin_action]): 1296 | coin_frame = 0 1297 | coin_img_id = animation_database[coin_action][coin_frame] 1298 | coin_img = animation_frames[coin_img_id] 1299 | 1300 | 1301 | for explosion in explosions: 1302 | if explosion.justcreated: 1303 | explosion.render(display) 1304 | explosion.animate('explosion') 1305 | 1306 | 1307 | 1308 | 1309 | for brick in bricks: 1310 | if brick.isbumping: 1311 | brick.bump() 1312 | 1313 | 1314 | brick.frame += 1 1315 | if brick.frame >= len(animation_database['brick']) and brick.action == 'brick' and not brick.destroyed: 1316 | 1317 | brick.frame = 0 1318 | brick.destroyed = True 1319 | bricks.remove(brick) 1320 | 1321 | if brick.frame >= len(animation_database[brick.action]): 1322 | brick.frame = 0 1323 | 1324 | 1325 | if not brick.destroyed: 1326 | brick.img_id = animation_database[brick.action][brick.frame] 1327 | brick.img = animation_frames[brick.img_id] 1328 | 1329 | brick.render(display) 1330 | if brick.collision_test(player_rect) and not IsGameOver: 1331 | if brick.loc[1] > player_rect.y: 1332 | vertical_momentum -= 0.2 1333 | air_timer = 0 1334 | if brick.loc[1] < player_rect.y and not IsGameOver: 1335 | if player_size in ['big','fire','bomber']: 1336 | broken_bricks.append(brick.get_small_rect()) 1337 | brick.action,brick.frame = change_action(brick.action,brick.frame,'brick') 1338 | brick_break_sound.set_volume(1) 1339 | brick_break_sound.play() 1340 | vertical_momentum = 5 1341 | if player_size == 'small': 1342 | brick.isbumping = True 1343 | brick.bump() 1344 | bump_sound.set_volume(1) 1345 | bump_sound.play() 1346 | 1347 | 1348 | for emptyblock in empty_what_blocks: 1349 | emptyblock.render(display) 1350 | if emptyblock.collision_test(player_rect) and not IsGameOver: 1351 | if emptyblock.loc[1] > player_rect.y: 1352 | vertical_momentum -= 0.2 1353 | air_timer = 0 1354 | if emptyblock.loc[1] < player_rect.y and not IsGameOver: 1355 | bump_sound.set_volume(1) 1356 | bump_sound.play() 1357 | vertical_momentum = 5 1358 | 1359 | 1360 | 1361 | for whatblock in what_blocks: 1362 | if whatblock.isbumping: 1363 | whatblock.bump() 1364 | 1365 | if whatblock.bumpingfinish: 1366 | coins += 1 1367 | score += 50 1368 | coin_bounces.append(Coin_bounce(whatblock.loc)) 1369 | empty_what_blocks.append(Empty_what_block(whatblock.loc)) 1370 | what_blocks.remove(whatblock) 1371 | 1372 | whatblock_action = 'what' 1373 | 1374 | whatblock_action,whatblock.frame = change_action(whatblock_action,whatblock.frame,'what') 1375 | 1376 | whatblock.frame += 1 1377 | if whatblock.frame >= len(animation_database[whatblock_action]): 1378 | whatblock.frame = 0 1379 | whatblock.img_id = animation_database[whatblock_action][whatblock.frame] 1380 | whatblock.img = animation_frames[whatblock.img_id] 1381 | 1382 | 1383 | whatblock.render(display) 1384 | 1385 | if whatblock.collision_test(player_rect) and not IsGameOver: 1386 | if player_rect.y > whatblock.loc[1]: 1387 | whatblock.isbumping = True 1388 | bump_sound.set_volume(0.5) 1389 | bump_sound.play() 1390 | coin_sound.play() 1391 | 1392 | for coin_bounce in coin_bounces: 1393 | coin_bounce.loc[1] -= 0.5 1394 | coin_bounce.render(display) 1395 | coin_bounce.action,coin_bounce.frame = change_action(coin_bounce.action,coin_bounce.frame,'coin_bounce') 1396 | coin_bounce.animate(coin_bounce.action) 1397 | 1398 | if coin_bounce.frameloops > 0: 1399 | coin_bounces.remove(coin_bounce) 1400 | 1401 | 1402 | for mushroomblock in mushroom_blocks: 1403 | 1404 | if mushroomblock.isbumping: 1405 | mushroomblock.bump() 1406 | 1407 | if mushroomblock.bumpingfinish: 1408 | if player_size == 'small': 1409 | empty_what_blocks.append(Empty_what_block(mushroomblock.loc)) 1410 | mushrooms.append(Mushroom(mushroomblock.loc)) 1411 | mushroom_blocks.remove(mushroomblock) 1412 | if player_size in ['big']: 1413 | empty_what_blocks.append(Empty_what_block(mushroomblock.loc)) 1414 | flowers.append(Flower(mushroomblock.loc)) 1415 | mushroom_blocks.remove(mushroomblock) 1416 | if player_size in ['fire','bomber']: 1417 | empty_what_blocks.append(Empty_what_block(mushroomblock.loc)) 1418 | bombers.append(Bomber(mushroomblock.loc)) 1419 | mushroom_blocks.remove(mushroomblock) 1420 | 1421 | mushroomblock_action = 'what' 1422 | mushroomblock_action,mushroomblock.frame = change_action(mushroomblock_action,mushroomblock.frame,'what') 1423 | 1424 | mushroomblock.frame += 1 1425 | if mushroomblock.frame >= len(animation_database[mushroomblock_action]): 1426 | mushroomblock.frame = 0 1427 | mushroomblock.img_id = animation_database[mushroomblock_action][mushroomblock.frame] 1428 | mushroomblock.img = animation_frames[mushroomblock.img_id] 1429 | 1430 | mushroomblock.render(display) 1431 | if mushroomblock.collision_test(player_rect) and not IsGameOver: 1432 | if player_rect.y > mushroomblock.loc[1]: 1433 | mushroomblock.isbumping = True 1434 | powerup_appear.set_volume(1) 1435 | powerup_appear.play() 1436 | vertical_momentum -= 3 1437 | 1438 | for bomber in bombers: 1439 | bomber.render(display) 1440 | if bomber.justcreated: 1441 | bomber.animate('bomber_pop') 1442 | else: 1443 | bomber.animate('bomber') 1444 | 1445 | if bomber.collision_test(player_rect) and bomber.isAlive and not IsGameOver: 1446 | if player_size == 'small': 1447 | score += 200 1448 | beingbig = True 1449 | player_rect = pygame.rect.Rect(player_rect.x,player_rect.y,16,32) 1450 | powerup.play() 1451 | player_size = 'big' 1452 | freeze_y = player_rect.y - 16 1453 | bombers.remove(bomber) 1454 | elif player_size == 'big': 1455 | beingfire = True 1456 | score += 200 1457 | powerup.play() 1458 | player_size = 'fire' 1459 | freeze_y = player_rect.y - 16 1460 | bombers.remove(bomber) 1461 | elif player_size == 'fire': 1462 | beingbomber = True 1463 | score += 200 1464 | powerup.play() 1465 | player_size = 'bomber' 1466 | freeze_y = player_rect.y - 16 1467 | bombers.remove(bomber) 1468 | else: 1469 | score += 100 1470 | powerup.play() 1471 | bombers.remove(bomber) 1472 | 1473 | for flower in flowers: 1474 | flower.render(display) 1475 | if flower.justcreated: 1476 | flower.animate('fpop') 1477 | else: 1478 | flower.animate('flower') 1479 | 1480 | if flower.collision_test(player_rect) and flower.isAlive and not IsGameOver: 1481 | if player_size == 'small': 1482 | score += 200 1483 | beingbig = True 1484 | player_rect = pygame.rect.Rect(player_rect.x,player_rect.y,16,32) 1485 | powerup.play() 1486 | player_size = 'big' 1487 | freeze_y = player_rect.y - 16 1488 | flowers.remove(flower) 1489 | elif player_size == 'big': 1490 | beingfire = True 1491 | score += 200 1492 | powerup.play() 1493 | player_size = 'fire' 1494 | freeze_y = player_rect.y - 16 1495 | flowers.remove(flower) 1496 | else: 1497 | score += 100 1498 | powerup.play() 1499 | flowers.remove(flower) 1500 | 1501 | for mushroom in mushrooms: 1502 | 1503 | mushroom.render(display) 1504 | 1505 | if mushroom.justcreated: 1506 | mushroom.animate('pop') 1507 | else: 1508 | mushroom.animate('mushroom') 1509 | 1510 | 1511 | mushroom.move() 1512 | mushroom.rect,collisions = move(mushroom.rect,mushroom.movement,tile_rects) 1513 | 1514 | if collisions['bottom'] == True: 1515 | mushroom.vertical_momentum = 0 1516 | if collisions['top'] == True: 1517 | mushroom.vertical_momentum = 0 1518 | if mushroom.vertical_momentum > 3: 1519 | mushroom.vertical_momentum = 3 1520 | if collisions['left'] == True: 1521 | mushroom.movement[0] = 1 1522 | mushroom.direction = 'right' 1523 | mushroom.move() 1524 | if collisions['right'] == True: 1525 | mushroom.direction = 'left' 1526 | mushroom.movement[0] = -1 1527 | mushroom.move() 1528 | 1529 | mushroom.loc[1] += mushroom.vertical_momentum 1530 | 1531 | if mushroom.collision_test(player_rect) and mushroom.isAlive and not IsGameOver: 1532 | if player_size == 'small': 1533 | score += 200 1534 | beingbig = True 1535 | player_rect = pygame.rect.Rect(player_rect.x,player_rect.y,16,32) 1536 | powerup.play() 1537 | player_size = 'big' 1538 | freeze_y = player_rect.y - 16 1539 | mushrooms.remove(mushroom) 1540 | else: 1541 | score += 100 1542 | powerup.play() 1543 | mushrooms.remove(mushroom) 1544 | 1545 | for coin in coin_objects: 1546 | coin.render(display) 1547 | if coin.collision_test(player_rect): 1548 | score += 50 1549 | coins += 1 1550 | coin_sound.play() 1551 | coin_objects.remove(coin) 1552 | 1553 | 1554 | 1555 | for goomba in goombas: 1556 | if abs(player_rect.x - goomba.loc[0]) < 160: 1557 | goomba.move() 1558 | 1559 | if goomba.rect.y > 200: 1560 | goombas.remove(goomba) 1561 | if goomba.flip: 1562 | goomba.rect.y += 2 1563 | 1564 | if not goomba.flip: 1565 | goomba.rect,collisions = move(goomba.rect,goomba.movement,tile_rects) 1566 | if collisions['bottom'] == True: 1567 | goomba.vertical_momentum = 0 1568 | if collisions['top'] == True: 1569 | goomba.vertical_momentum = 0 1570 | if goomba.vertical_momentum > 3: 1571 | goomba.vertical_momentum = 3 1572 | if collisions['left'] == True: 1573 | goomba.direction = 'right' 1574 | goomba.move() 1575 | if collisions['right'] == True: 1576 | goomba.direction = 'left' 1577 | goomba.move() 1578 | 1579 | if goomba.vertical_momentum > 3: 1580 | goomba.vertical_momentum = 3 1581 | 1582 | 1583 | 1584 | if goomba.isAlive or goomba not in goombas_kill: 1585 | goomba.move() 1586 | goomba.animate('goomba_run') 1587 | else: 1588 | goomba.animate('goomba_die') 1589 | 1590 | goomba.render(display) 1591 | 1592 | for fireball in fireballs: 1593 | if goomba.collision_test(fireball.get_rect()) and goomba.isAlive: 1594 | fireballs.remove(fireball) 1595 | kick_sound.play() 1596 | score += 100 1597 | goomba.isAlive = True 1598 | pygame.time.set_timer(pygame.USEREVENT+0, 500) 1599 | goombas_kill.append(goomba) 1600 | goomba.flip = True 1601 | 1602 | for explosion in explosions: 1603 | if goomba.collision_test(explosion.get_rect()) and goomba.isAlive: 1604 | kick_sound.play() 1605 | score += 100 1606 | goomba.isAlive = False 1607 | pygame.time.set_timer(pygame.USEREVENT+0, 500) 1608 | koopas_kill.append(koopa) 1609 | goomba.flip = True 1610 | 1611 | if goomba.collision_test(player_rect) and goomba.isAlive and not IsGameOver: 1612 | if player_size == 'small': 1613 | if (player_rect.y) < goomba.loc[1]: 1614 | stomp_sound.play() 1615 | vertical_momentum = -3 1616 | score += 100 1617 | goomba.isAlive = False 1618 | pygame.time.set_timer(pygame.USEREVENT+0, 500) 1619 | goombas_kill.append(goomba) 1620 | elif goomba.isAlive: 1621 | pygame.time.set_timer(pygame.USEREVENT+1, 1) 1622 | die_sound.play() 1623 | IsGameOver = True 1624 | 1625 | if player_size == 'big': 1626 | if (player_rect.y+16) < goomba.loc[1]: 1627 | stomp_sound.play() 1628 | vertical_momentum = -3 1629 | score += 100 1630 | goomba.isAlive = False 1631 | pygame.time.set_timer(pygame.USEREVENT+0, 500) 1632 | goombas_kill.append(goomba) 1633 | elif goomba.isAlive and not isinvincible: 1634 | player_rect = pygame.rect.Rect(player_rect.x,player_rect.y,16,16) 1635 | powerdown.play() 1636 | player_size = 'small' 1637 | beingsmall = True 1638 | vertical_momentum = -3 1639 | isinvincible = True 1640 | 1641 | if player_size in ['fire']: 1642 | if (player_rect.y+16) < goomba.loc[1]: 1643 | stomp_sound.play() 1644 | vertical_momentum = -3 1645 | score += 100 1646 | goomba.isAlive = False 1647 | pygame.time.set_timer(pygame.USEREVENT+0, 500) 1648 | goombas_kill.append(goomba) 1649 | elif goomba.isAlive and not isinvincible: 1650 | powerdown.play() 1651 | player_size = 'big' 1652 | beingsmall = True 1653 | vertical_momentum = -3 1654 | isinvincible = True 1655 | 1656 | if player_size in ['bomber']: 1657 | if (player_rect.y+16) < goomba.loc[1]: 1658 | stomp_sound.play() 1659 | vertical_momentum = -3 1660 | score += 100 1661 | goomba.isAlive = False 1662 | pygame.time.set_timer(pygame.USEREVENT+0, 500) 1663 | goombas_kill.append(goomba) 1664 | elif goomba.isAlive and not isinvincible: 1665 | powerdown.play() 1666 | player_size = 'fire' 1667 | beingfire = True 1668 | vertical_momentum = -3 1669 | isinvincible = True 1670 | 1671 | 1672 | for koopa in koopas: 1673 | if abs(player_rect.x - koopa.loc[0]) < 160: 1674 | 1675 | if not koopa.isstomped: 1676 | koopa.move() 1677 | 1678 | if koopa.rect.y > 200: 1679 | koopas.remove(koopa) 1680 | if koopa.flip: 1681 | koopa.rect.y += 2 1682 | 1683 | if not koopa.flip: 1684 | koopa.rect,collisions = move(koopa.rect,koopa.movement,tile_rects) 1685 | if collisions['bottom'] == True: 1686 | koopa.vertical_momentum = 0 1687 | if collisions['top'] == True: 1688 | koopa.vertical_momentum = 0 1689 | if koopa.vertical_momentum > 3: 1690 | koopa.vertical_momentum = 3 1691 | if collisions['left'] == True: 1692 | koopa.direction = 'right' 1693 | if collisions['right'] == True: 1694 | koopa.direction = 'left' 1695 | 1696 | if koopa.vertical_momentum > 3: 1697 | koopa.vertical_momentum = 3 1698 | 1699 | 1700 | 1701 | if koopa.isAlive or koopa not in koopas_kill: 1702 | koopa.animate('koopa_run') 1703 | if koopa.isstomped: 1704 | koopa.animate('koopa_die') 1705 | 1706 | koopa.render(display) 1707 | 1708 | for fireball in fireballs: 1709 | if koopa.collision_test(fireball.get_rect()): 1710 | fireballs.remove(fireball) 1711 | kick_sound.play() 1712 | score += 100 1713 | koopa.isAlive = False 1714 | koopa.isstomped = True 1715 | pygame.time.set_timer(pygame.USEREVENT+0, 500) 1716 | koopas_kill.append(koopa) 1717 | koopa.flip = True 1718 | 1719 | for explosion in explosions: 1720 | if koopa.collision_test(explosion.get_rect()): 1721 | kick_sound.play() 1722 | score += 100 1723 | koopa.isAlive = False 1724 | koopa.isstomped = True 1725 | pygame.time.set_timer(pygame.USEREVENT+0, 500) 1726 | koopas_kill.append(koopa) 1727 | koopa.flip = True 1728 | 1729 | if koopa.collision_test(player_rect) and koopa.isAlive and not IsGameOver: 1730 | if not koopa.isstomped: 1731 | if player_size == 'small': 1732 | if (player_rect.y) < koopa.loc[1]: 1733 | stomp_sound.play() 1734 | vertical_momentum = -3 1735 | score += 100 1736 | koopa.isstomped = True 1737 | pygame.time.set_timer(pygame.USEREVENT+0, 500) 1738 | koopas_kill.append(koopa) 1739 | koopa.rect = pygame.Rect(koopa.loc[0], koopa.loc[1] + 6, 16, 16) 1740 | koopa.movement[0] = 0 1741 | elif not koopa.isstomped: 1742 | die_sound.play() 1743 | IsGameOver = True 1744 | 1745 | if player_size == 'big': 1746 | if (player_rect.y+16) < koopa.loc[1]: 1747 | stomp_sound.play() 1748 | vertical_momentum = -3 1749 | score += 100 1750 | koopa.isstomped = True 1751 | pygame.time.set_timer(pygame.USEREVENT+0, 500) 1752 | koopas_kill.append(koopa) 1753 | koopa.rect = pygame.Rect(koopa.loc[0], koopa.loc[1] + 6, 16, 16) 1754 | koopa.movement[0] = 0 1755 | elif not koopa.isstomped: 1756 | player_rect = pygame.rect.Rect(player_rect.x,player_rect.y,16,16) 1757 | powerdown.play() 1758 | player_size = 'small' 1759 | beingsmall = True 1760 | vertical_momentum = -3 1761 | 1762 | if player_size in ['bomber']: 1763 | if (player_rect.y+16) < koopa.loc[1]: 1764 | stomp_sound.play() 1765 | vertical_momentum = -3 1766 | score += 100 1767 | koopa.isAlive = True 1768 | koopa.isstomped = True 1769 | koopa.rect = pygame.Rect(koopa.loc[0], koopa.loc[1] + 6, 16, 16) 1770 | pygame.time.set_timer(pygame.USEREVENT+0, 500) 1771 | koopas_kill.append(koopa) 1772 | koopa.movement[0] = 0 1773 | elif koopa.isAlive: 1774 | powerdown.play() 1775 | player_size = 'fire' 1776 | beingfire = True 1777 | vertical_momentum = -3 1778 | 1779 | if player_size in ['fire']: 1780 | if (player_rect.y+16) < koopa.loc[1]: 1781 | stomp_sound.play() 1782 | vertical_momentum = -3 1783 | score += 100 1784 | koopa.isAlive = True 1785 | koopa.isstomped = True 1786 | koopa.rect = pygame.Rect(koopa.loc[0], koopa.loc[1] + 6, 16, 16) 1787 | pygame.time.set_timer(pygame.USEREVENT+0, 500) 1788 | koopas_kill.append(koopa) 1789 | koopa.movement[0] = 0 1790 | elif koopa.isAlive: 1791 | powerdown.play() 1792 | player_size = 'big' 1793 | beingvig = True 1794 | vertical_momentum = -3 1795 | 1796 | 1797 | 1798 | 1799 | for fireball in fireballs: 1800 | 1801 | fireball.render(display) 1802 | fireball.animate('fireball') 1803 | 1804 | fireball.move() 1805 | fireball.rect,collisions = move(fireball.rect,fireball.movement,tile_rects) 1806 | 1807 | if fireball.bounces > 1: 1808 | fireballs.remove(fireball) 1809 | 1810 | if collisions['bottom'] == True: 1811 | fireball.bounces += 1 1812 | fireball.vertical_momentum = -3 1813 | if collisions['top'] == True: 1814 | fireball.bounces += 1 1815 | fireball.vertical_momentum = -3 1816 | if fireball.vertical_momentum > 3: 1817 | fireball.vertical_momentum = 3 1818 | if collisions['left'] == True: 1819 | fireball.bounces += 1 1820 | if fireball.vertical_momentum > 0: 1821 | fireball.vertical_momentum = -3 1822 | fireball.direction = 'right' 1823 | else: 1824 | fireball.vertical_momentum = 3 1825 | fireball.direction = 'right' 1826 | 1827 | if collisions['right'] == True: 1828 | fireball.bounces += 1 1829 | if fireball.vertical_momentum > 0: 1830 | fireball.vertical_momentum = -3 1831 | fireball.direction = 'right' 1832 | else: 1833 | fireball.vertical_momentum = 3 1834 | fireball.direction = 'left' 1835 | if fireball.loc[1] > 200: 1836 | fireballs.remove(fireball) 1837 | 1838 | for bomb in bombs: 1839 | 1840 | bomb.render(display) 1841 | bomb.animate('bomb') 1842 | 1843 | bomb.move() 1844 | bomb.rect,collisions = move(bomb.rect,bomb.movement,tile_rects) 1845 | 1846 | 1847 | if collisions['bottom'] == True: 1848 | bomb.vertical_momentum = -3 1849 | explosions.append(Explosion(bomb.loc)) 1850 | bombs.remove(bomb) 1851 | if collisions['top'] == True: 1852 | bomb.vertical_momentum = -3 1853 | explosions.append(Explosion(bomb.loc)) 1854 | bombs.remove(bomb) 1855 | if bomb.vertical_momentum > 3: 1856 | bomb.vertical_momentum = 3 1857 | if collisions['left'] == True: 1858 | explosions.append(Explosion(bomb.loc)) 1859 | bombs.remove(bomb) 1860 | 1861 | if collisions['right'] == True: 1862 | explosions.append(Explosion(bomb.loc)) 1863 | bombs.remove(bomb) 1864 | 1865 | if bomb.loc[1] > 200: 1866 | bombs.remove(bomb) 1867 | 1868 | 1869 | 1870 | for flag in flags: 1871 | flag.render(display) 1872 | if flag.collision_test(player_rect) and not IsGameOver: 1873 | blockinput = False 1874 | vertical_momentum = 1.2 1875 | player_flip = False 1876 | 1877 | player_img = small_flag_img 1878 | player_rect.x = flag.loc[0] - 12 1879 | pygame.mixer.music.stop() 1880 | pygame.mixer.music.load('music/stage_clear.wav') #load music from files 1881 | pygame.mixer.music.play() #play the loaded music 1882 | 1883 | NextLevel = True 1884 | 1885 | 1886 | for label in Labels: 1887 | label.render(display) 1888 | 1889 | 1890 | 1891 | 1892 | for event in pygame.event.get(): # Loop through every events of the game. 1893 | 1894 | if event.type == pygame.USEREVENT+0: 1895 | for goo in goombas_kill: 1896 | if not goo.flip: 1897 | try: 1898 | goombas.remove(goo) 1899 | goombas_kill.remove(goo) 1900 | except: 1901 | break 1902 | 1903 | if event.type == pygame.USEREVENT+1: 1904 | 1905 | if a0xe3d == 0: 1906 | player_rect.y -= 9 1907 | a0xe3d = 1 1908 | pygame.time.delay(10) 1909 | 1910 | 1911 | 1912 | 1913 | 1914 | if event.type == QUIT: # Check if the [X] Close window button is clicked. 1915 | pygame.quit() # Exit the window. 1916 | sys.exit() # Exit the console. 1917 | 1918 | # Input Handling. 1919 | if event.type == KEYDOWN and not IsGameOver and not blockinput: # Check if any key is pressed 1920 | if event.key == K_LEFT: # Check if the pressed key is left 1921 | moving_left = True 1922 | if event.key == K_x: 1923 | movement[0] += 3 1924 | if event.key == K_RIGHT: # Check if the pressed key is right 1925 | moving_right = True 1926 | if event.key == K_x: 1927 | movement[0] -= 3 1928 | if event.key == K_UP: 1929 | if air_timer < 7: 1930 | vertical_momentum = -5 1931 | isFreeFalling = True 1932 | if player_size == 'small': 1933 | small_jump_sound.set_volume(1) 1934 | small_jump_sound.play() 1935 | elif player_size in ['big','fire','bomber']: 1936 | big_jump_sound.set_volume(1) 1937 | big_jump_sound.play() 1938 | 1939 | if event.key == K_x: 1940 | if player_size == 'fire': 1941 | 1942 | if not isFreeFalling: 1943 | speedMultiplier = 1.5 1944 | if len(fireballs) < 2: 1945 | fireball_sound.play() 1946 | if player_flip: 1947 | fireballs.append(Fireball([player_rect.x - 12,player_rect.y], 'left')) 1948 | else: 1949 | fireballs.append(Fireball([player_rect.x + 12,player_rect.y], 'right')) 1950 | elif player_size == 'bomber': 1951 | 1952 | if not isFreeFalling: 1953 | speedMultiplier = 1.5 1954 | if len(bombs) < 2: 1955 | fireball_sound.play() 1956 | if player_flip: 1957 | bombs.append(Bomb([player_rect.x - 12,player_rect.y], 'left')) 1958 | else: 1959 | bombs.append(Bomb([player_rect.x + 12,player_rect.y], 'right')) 1960 | else: 1961 | if not isFreeFalling: 1962 | speedMultiplier = 1.5 1963 | 1964 | if event.key == K_1: 1965 | beingsmall = True 1966 | player_size ='small' 1967 | powerdown.play() 1968 | player_x = player_rect.x 1969 | player_y = player_rect.y 1970 | player_rect = pygame.rect.Rect(player_x,player_y,16,16) 1971 | 1972 | if event.key == K_2: 1973 | beingbig = True 1974 | player_size ='big' 1975 | powerup.play() 1976 | player_x = player_rect.x 1977 | player_y = player_rect.y 1978 | player_rect = pygame.rect.Rect(player_x,player_y,16,32) 1979 | 1980 | if event.key == K_3: 1981 | beingfire = True 1982 | player_size ='fire' 1983 | powerup.play() 1984 | player_x = player_rect.x 1985 | player_y = player_rect.y 1986 | player_rect = pygame.rect.Rect(player_x,player_y,16,32) 1987 | 1988 | if event.key == K_4: 1989 | beingbomber = True 1990 | player_size ='bomber' 1991 | powerup.play() 1992 | player_x = player_rect.x 1993 | player_y = player_rect.y 1994 | player_rect = pygame.rect.Rect(player_x,player_y,16,32) 1995 | 1996 | if event.key == K_0: 1997 | NextLevel = True 1998 | if event.type == KEYUP and not IsGameOver: # Check if any key is released. 1999 | if event.key == K_LEFT : # Check if the pressed key is left 2000 | moving_left = False 2001 | if event.key == K_RIGHT: # Check if the pressed key is right 2002 | moving_right = False 2003 | if event.key == K_x: 2004 | speedMultiplier = 1 2005 | 2006 | #Debug Console 2007 | #print('\n' * 100) 2008 | #print('Player[x,y,g,airtime,fps] :'+ str([player_rect.x,player_rect.y,vertical_momentum,air_timer,clock])) 2009 | #print('Player[score,scrollx,scrolly]' +str([score,scrollx,scrolly])) 2010 | pygame.display.update() # Update the display. 2011 | screen.blit(pygame.transform.scale(display,WINDOW_SIZE),(0,0)) 2012 | clock.tick(60) # Cap the frame rate of the game to 60fps. 2013 | 2014 | --------------------------------------------------------------------------------