Pythonはスーパーマリオを実装しています

この記事の例では、参考のためにPythonでSuperMarioを作成するための特定のコードを共有しています。具体的な内容は次のとおりです。

完全なコードと資料で私を突く

メインコード

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
} classState():
 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'''classControl():
 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でスターをクリックするのを忘れました。

以上が本稿の内容ですので、皆様のご勉強に役立てていただければ幸いです。

Recommended Posts

Pythonはスーパーマリオを実装しています
Pythonはtic-tac-toeゲームを実装しています
Pythonはtic-tac-toeゲームを実装しています
Pythonはマンマシンゴバンを実装します
PythonはTetrisゲームを実装しています
Pythonは画像スティッチングを実装しています
Pythonはminesweeperゲームを実装しています
Pythonはスキャンツールを実装しています
Pythonはしきい値回帰を実装します
Pythonは地雷除去ゲームを実装しています
Pythonは電子辞書を実装しています
Pythonは推測ゲームを実装しています
Pythonは単純なタンクバトルを実装します
Pythonはudpチャットウィンドウを実装します
PythonはWeChat飛行機ゲームを実装しています
Pythonは単語推測ゲームを実装しています
Pythonは推測ゲームを実装しています
Pythonは駐車場管理システムを実現
Pythonはデジタル爆弾ゲームを実装しています
PythonはTCPファイル転送を実装します
Pythonnumpyはローリングケースを実装します
OpenCVPythonはパズルゲームを実装しています
Pythonは単純なtic-tac-toeゲームを実装しています
Pythonはパスワード強度検証を実装します
Pythonは車の管理システムを実装しています
Pythonはコードブロックフォールディングを実装します
Pythonはパノラマ画像スティッチングを実装しています
PythonはSMTPメール送信を実装します
Pythonは多次元配列ソートを実装しています
PythonがFTP機能を実装する方法
Pythonは平均シフトクラスタリングアルゴリズムを実装しています
Pythonは検証コード認識を実装します
Pythonは勾配降下法を実装しています
Pythonはテキストバージョンのminesweeperを実装しています
Pythonは画像スティッチング機能を実装しています
Pythonは実店舗のゲームを実装しています
Pythonは学生のパフォーマンス評価システムを実装しています
Pythonがメール機能を実装する方法
Pythonは単にスネークゲームを実装します
Python3はシングルトンデザインパターンを実装しています
Pythonは為替レート変換操作を実装します
Pythonは文字列と数値のスプライシングを実装します
Pythonは10の古典的なソートアルゴリズムを実装しています
PythonはユニバーサルWebフレームワークを実装しています
Pythonは、メールを送信するために126のメールボックスを実装しています
PythonはAIフェイスチェンジ機能を実装しています
Pythonは最も急な降下方法を実装します
Pythonは実際の銀行システムを実装しています
Pythonはデジタル爆弾ゲームプログラムを実装しています
Pythonはftpファイル転送機能を実装しています
Pythonはユーザー名とパスワードの検証を実装しています
Pythonがタイマー機能を実装する方法
Pythonは航空機戦争プロジェクトを実装します
Pythonは写真の水平ステッチを実装しています
PythonはGIFグラフを逆さまに実装します
Pythonはメールを送信するためのQQメールボックスを実装しています
Pythonは2つのスレッドの代替実行を実装します
Pythonは分数シーケンスの合計を実装します
pythonは勾配メソッドを実装しますpython最速の降下メソッド
Pythonは、単一にリンクされたリストと辞書を実装します
python3は単に結合された設計パターンを実装します