python实现超级马里奥

本文实例为大家分享了Python写超级马里奥的具体代码,供大家参考,具体内容如下

完整代码和素材戳我

主代码

import pygame as pg
from source.main import main

if __name__=='__main__':
  main()
  pg.quit()

main

__author__ = 'marble_xu'

import pygame as pg
from . import setup, tools
from . import constants as c
from .states import main_menu, load_screen, level

def main():
  game = tools.Control()
  state_dict = {c.MAIN_MENU: main_menu.Menu(),
         c.LOAD_SCREEN: load_screen.LoadScreen(),
         c.LEVEL: level.Level(),
         c.GAME_OVER: load_screen.GameOver(),
         c.TIME_OUT: load_screen.TimeOut()}
  game.setup_states(state_dict, c.MAIN_MENU)
  game.main()

setup

__author__ = 'marble_xu'

import os
import pygame as pg
from . import constants as c
from . import tools

pg.init()
pg.event.set_allowed([pg.KEYDOWN, pg.KEYUP, pg.QUIT])
pg.display.set_caption(c.ORIGINAL_CAPTION)
SCREEN = pg.display.set_mode(c.SCREEN_SIZE)
SCREEN_RECT = SCREEN.get_rect()

GFX = tools.load_all_gfx(os.path.join("resources","graphics"))

tools

__author__ = 'marble_xu'

import os
import pygame as pg
from abc import ABC, abstractmethod

keybinding = {
  'action':pg.K_s,
  'jump':pg.K_a,
  'left':pg.K_LEFT,
  'right':pg.K_RIGHT,
  'down':pg.K_DOWN
}

class State():
  def __init__(self):
    self.start_time = 0.0
    self.current_time = 0.0
    self.done = False
    self.next = None
    self.persist = {}

  @abstractmethod
  def startup(self, current_time, persist):
    '''abstract method'''

  def cleanup(self):
    self.done = False
    return self.persist

  @abstractmethod
  def update(sefl, surface, keys, current_time):
    '''abstract method'''

class Control():
  def __init__(self):
    self.screen = pg.display.get_surface()
    self.done = False
    self.clock = pg.time.Clock()
    self.fps = 60
    self.current_time = 0.0
    self.keys = pg.key.get_pressed()
    self.state_dict = {}
    self.state_name = None
    self.state = None

  def setup_states(self, state_dict, start_state):
    self.state_dict = state_dict
    self.state_name = start_state
    self.state = self.state_dict[self.state_name]

  def update(self):
    self.current_time = pg.time.get_ticks()
    if self.state.done:
      self.flip_state()
    self.state.update(self.screen, self.keys, self.current_time)

  def flip_state(self):
    previous, self.state_name = self.state_name, self.state.next
    persist = self.state.cleanup()
    self.state = self.state_dict[self.state_name]
    self.state.startup(self.current_time, persist)

  def event_loop(self):
    for event in pg.event.get():
      if event.type == pg.QUIT:
        self.done = True
      elif event.type == pg.KEYDOWN:
        self.keys = pg.key.get_pressed()
      elif event.type == pg.KEYUP:
        self.keys = pg.key.get_pressed()

  def main(self):
    while not self.done:
      self.event_loop()
      self.update()
      pg.display.update()
      self.clock.tick(self.fps)

def get_image(sheet, x, y, width, height, colorkey, scale):
    image = pg.Surface([width, height])
    rect = image.get_rect()

    image.blit(sheet, (0, 0), (x, y, width, height))
    image.set_colorkey(colorkey)
    image = pg.transform.scale(image,
                  (int(rect.width*scale),
                  int(rect.height*scale)))
    return image

def load_all_gfx(directory, colorkey=(255,0,255), accept=('.png', '.jpg', '.bmp', '.gif')):
  graphics = {}
  for pic in os.listdir(directory):
    name, ext = os.path.splitext(pic)
    if ext.lower() in accept:
      img = pg.image.load(os.path.join(directory, pic))
      if img.get_alpha():
        img = img.convert_alpha()
      else:
        img = img.convert()
        img.set_colorkey(colorkey)
      graphics[name] = img
  return graphics

运行成果

好了,被忘了在GitHub里面点star喔。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • python实现超级玛丽游戏

    python制作超级玛丽游戏,供大家参考,具体内容如下 这篇文章,我们优先介绍超级玛丽游戏中的多状态跳跃,和行走地图拖动的原理,然后实现.并实现倒计时和金币动态效果 接下来用下面这四张图,就可以完全懂得游戏中背景是怎么会移动的. 图1 图2 图3 图4 由于代码是我前几年学习python的时候做的,代码写的很挤都整到一个源文件中,大家看的时候仔细. 然后上源代码: #!/usr/bin/env python # -*- coding:utf-8 -*- import pygame,os,wx f

  • python实现超级马里奥

    本文实例为大家分享了Python写超级马里奥的具体代码,供大家参考,具体内容如下 完整代码和素材戳我 主代码 import pygame as pg from source.main import main if __name__=='__main__': main() pg.quit() main __author__ = 'marble_xu' import pygame as pg from . import setup, tools from . import constants as

  • 小伙熬夜用Java重现经典超级马里奥代码实例

    说起Java,很多人都想问,Java这么火但是Java能干什么呢?Java主要是做企业级的应用开发,其实Java还可以做游戏开发,Java不仅开发过电脑端的游戏,手游也有开发过,经典的游戏有很多,比如<我的世界>.<吃豆>等等,今天小编来分享一个用Java开发超级马里奥. 游戏界面展示: 游戏代码如下: 以上所述是小编给大家介绍的Java重现经典超级马里奥详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的.在此也非常感谢大家对我们网站的支持!

  • python游戏实战项目之童年经典超级玛丽

    导语 "超级玛丽"--有多少人还记得这款经典游戏?那个戴帽子的大胡子穿着背带裤的马里奥! 带您重温经典的回忆,超级马里奥拯救不开心!炫酷来袭. 如果您的童年,也曾被魔性的 灯~灯灯~灯~灯灯~灯洗脑~那就来怀旧一番吧! 我是华丽的分割线------------------------------ 往期写过游戏实战已经积累到30几篇了哦~嘿嘿,推一波之前的,狗头保命.jpg. 欢迎大家来领免费的游戏,开玩啦~源码可以直接找我拿滴! 在座的各位大佬,你们都玩过这里面的几个游戏吖? ​ 往期

  • Python+Pygame实现海洋之神大冒险游戏

    利用pygame自制小游戏. 海洋之神在漆黑的海底深处,利用自身的光勇敢前进!在海里收集鱼骨头,有些鱼骨头可以转化为武器,用来攻击敌人. 开始: 游戏开始的界面: 快通关啦! 结尾致敬超级马里奥,碰到小蘑菇就可以去下一关冒险! 海底背景自己画的,按钮图案自己画的,通关蘑菇自己画的. 特效代码 import pygame import random import sys import time pygame.init() clock = pygame.time.Clock() win = pyga

  • 小白入门篇使用Python搭建点击率预估模型

    点击率预估模型 0.前言 本篇是一个基础机器学习入门篇文章,帮助我们熟悉机器学习中的神经网络结构与使用. 日常中习惯于使用Python各种成熟的机器学习工具包,例如sklearn.TensorFlow等等,来快速搭建各种各样的机器学习模型来解决各种业务问题. 本文将从零开始,仅仅利用基础的numpy库,使用Python实现一个最简单的神经网络(或者说是简易的LR,因为LR就是一个单层的神经网络),解决一个点击率预估的问题. 1.假设一个业务场景 声明:为了简单起见,下面的一切设定从简-. 定义需

  • python实现学生管理系统开发

    使用python完成超级基础的学生管理系统,供大家参考,具体内容如下 说明: 1.本学生管理系统非常非常简易,只有增,显,查,删,改功能,对于Python新手容易看懂上手. 2.信息的存储只使用了字典和列表. 3.不喜勿喷. 代码: 1.主循环框架 while True: print(info_str) action = input("请输入想要进行的操作:") if action == '0': print("再见.") break elif action ==

  • 适合Python项目的五大SQL连接器

    目录 1. PyMySQL(https://pypi.org/project/PyMySQL/) 2. MySQLdb(https://mysqlclient.readthedocs.io/user_guide.html) 3. QTSQL(https://doc.qt.io/qt-5/qtsql-index.html) 4. Psycopg2(https://pypi.org/project/psycopg2/) 5. SuperSQLite(https://github.com/plasti

  • 由JavaScript技术实现的web小游戏(不含网游)

    1.Mario(游戏地址:http://jsmario.com.ar/ ) 传说中的马里奥网页版,一比一实现了红白机时代超级马里奥中所有功能 与关卡,精细程度不逊原版游戏.依 赖库:无 2 . Bunny Hunt (游戏地址: http://www.themaninblue.com/experiment/BunnyHunt/) 猎兔,一款简单耐玩的网页狩猎游戏,没有使用第三方支持库,直接利用 css 与 JavasSript 实 现. 依 赖库:无 3 . Bomberman ( 游戏地址: 

随机推荐