pythonはゲームを開発できますか

Pythonはゲームを書くことができますが、適切ではありません。以下の具体的な理由を分析してみましょう。

ハンマーで車を作ることはできますか?誰もノーとは言えませんか?確かに歴史上、ハンマーで作られた車がありました。しかし、一般的に、産業用ロボットを使用する方が適切ですか?

Pythonを使用する比較的大きなゲームは2つあり、1つは「EVE」、もう1つは「Civilization」です。しかし、これは単なる例であり、広い意味はありません。
一般的に言って、ゲームを作るために使用される2つの言語があります。 1つはC ++です。 。 1つはC#です。 。

理論的には、Pythonはゲームに適しているだけでなく、大規模なプログラムが適していない限り適しています。計算機、クローラーなどの比較的小さなものを書くのにのみ適しています。

2つの主要な側面があります。1つは低速であり、もう1つは文法上の欠陥です。

たぶん、Pythonの構文はクリーンでエレガントだと思わなければなりませんが、なぜ欠陥があるのでしょうか。しかし、それについて慎重に考えてください、なぜ他の言語はそれほどきれいではないのですか?それほどエレガントではありませんか?明らかに、a = 123は直接書き込むことができますが、なぜint a = 123として書き込む必要があるのですか。他の言語の設計者が強迫観念を持っているからですか?理由は単純です、利益と損失があります。
データタイプが文字列と数字のみの場合、変数を宣言するプロセスを省略しても問題はありません。しかし、ロジックが複雑になる限り、状況はまったく異なります。 。 。ゲームでは、C#またはC ++で記述します。おそらく次のようになります。

スキル=xxxx;
武器b=xxxx;
役割c=xxxx;
ポーションd=xxxx;
音楽e=xxxx;

Pythonはどうですか?おそらくこのように

a=xxxx
b=xxxx
c=xxxx
d=xxxx

コードがほとんどない場合は、Pythonの方が明らかに便利です。しかし、何百ものオブジェクトを作成すると、コードは10,000行を超えます。 。 。数千行を書いたとき、xというオブジェクトに遭遇しました。それが何であるかまだ知っていますか?それは武器ですか?またはポーションのボトル?まだ写真?オーディオの一部?ライト?家?
10,000行のコードが多いとは思わないでください。 。 。 。 10,000行は「ファイトランドロード」を終えることさえできません。 。

Pythonで大規模なプログラムを作成する感覚は、初日に50行のコードを作成し、3つのクラスと5つのオブジェクトを作成しただけであるということです。あなたはとてもクールに感じるでしょう、これは間違いなく世界で最高の言語です。 。 。翌日、さらに2つのクラスと5つのオブジェクトを作成すると、少し目がくらむように感じました。 3日目に、さらに2つのクラスを作成した後、コメントを注意深く読む必要があることに気付くでしょう。そうしないと、コメントを書くことができません。 4日目は一日中メモを読んでいます。 。 。 。

これは動的言語の劣った性質です。当初、コードの量は少なく、欠点は見られず、あらゆる種類のトラブルがなく、あらゆる種類のクールでした。コードが多いほど、脳は混乱します。一般的に500行を超えると、JAVAやC#などの言語が効率を上回ります。 。 1000行、理解するにはさまざまなコメントを追加する必要があります。 。 2000行、コードよりもコメントが多い。 。 5000行、コメントはまったく役に立たない、コードがまったく理解できない、ピットを破棄する準備をする必要がある。

要約すると、それはpythonがゲームを開発できないということではなく、単に適切ではありません。各言語には独自の長所と短所があります。おそらく、pythonの短所はゲームの開発です。

Pythonゲームの例の補足:

ディーリングゲーム

  1. ゲーム紹介

4人のプレイヤーがカードをプレイし、コンピューターがランダムに52枚のカード(大小の王には適していません)を4人のプレイヤーに配布し、各プレイヤーのカードを画面に表示します。

  1. オブジェクト指向プログラミング

  2. プログラミング手順

デザインカテゴリ、ライセンスプログラムには、カードカテゴリ、ハンドカテゴリ、ポークカテゴリの3つのカテゴリがあります。

カードクラス:カードクラスはカードを表します。FaceNumフィールドはカード番号1〜13を示し、Suitフィールドはスーツの色、クラブの「プラム」、正方形の「正方形」、ハートの「赤」を示します。 「黒」はスペードを意味します。

Handクラス:Handクラスは、プレーヤーの手にあるカードと見なすことができる手(プレーヤーが持っているカード)を表します。cardslist変数は、プレーヤーの手にあるカードを格納します。カードを追加したり、手札のカードをクリアしたり、他のプレイヤーにカードを渡したりすることができます。

ポーククラス:ポーククラスはカードのデッキを表します。カードのデッキは52枚のカードを持つプレーヤーと見なすことができるため、ハンドクラスを継承します。カードリスト変数は52枚のカードを格納する必要があり、カードは配られてシャッフルされるため、次のメソッドが追加されます。

メインプログラム:メインプログラムは比較的単純です。4人のプレーヤーがいるため、初期化された4人のプレーヤーを格納するためにプレーヤーリストが生成されます。カードのデッキのオブジェクトインスタンスpoke1を生成し、populate()メソッドを呼び出して52枚のカードのデッキを生成し、huffle()メソッドを呼び出して順序をシャッフルし、deal(players、13)メソッドを呼び出して各プレーヤーに13を与えます。カード、そして最後に4人のプレーヤーのすべてのカードを表示します。

classCard():""" A playing card. """
 RANKS=["A","2","3","4","5","6","7","8","9","10","J","Q","K"] #カード番号1-13
 SUITS=["梅","平方","赤","黒"]
# プラムはクラブ、正方形は正方形のダイヤモンド、赤は赤いハート、黒はスペードです

 def __init__(self,rank,suit,face_up=True):
 self.rank=rank    #カード番号1を参照-13
 self.suit=suit    #スーツはスーツを指します
 self.is_face_up=face_up #カードの表面を表示するかどうか、Trueはカードの表面、Falseはカードの裏面です。

 def __str__(self): #print()if self.is_face_up:
 rep=self.suit+self.rank #+" "+str(self.pic_order())else:
 rep="XX"return rep

 def flip(self):    #フロップ法
 self.is_face_up=not self.is_face_up

 def pic_order(self):   #シーケンス番号
 if self.rank=="A":
 FaceNum=1
 elif self.rank=="J":
 FaceNum=11
 elif self.rank=="Q":
 FaceNum=12
 elif self.rank=="K":
 FaceNum=13else:
 FaceNum=int(self.rank)if self.suit=="梅":
 Suit=1
 elif self.suit=="平方":
 Suit=2
 elif self.suit=="赤":
 Suit=3else:
 Suit=4return(Suit-1)*13+FaceNum
classHand():""" A hand of playing cards. """
 def __init__(self):
 self.cards=[]
 def __str__(self):if self.cards:
 rep=""for card in self.cards:
 rep+=str(card)+"\t"else:
 rep="無免許"return rep
 def clear(self):
 self.cards=[]
 def add(self,card):
 self.cards.append(card)
 def give(self,card,other_hand):
 self.cards.remove(card)
 other_hand.add(card)classPoke(Hand):""" A deck of playing cards. """
 def populate(self):   #カードのデッキを生成する
 for suit in Card.SUITS:for rank in Card.RANKS:
 self.add(Card(rank,suit))
 def shuffle(self):   #シャッフル
 import random
 random.shuffle(self.cards) #カードの順序をシャッフルします
 def deal(self,hands,per_hand=13):for rounds inrange(per_hand):for hand in hands:

 top_card=self.cards[0]
 self.cards.remove(top_card)
 hand.add(top_card)if __name__=="__main__":print("This is a module with classed for playing cards.")
 # 4人のプレーヤー
 players=[Hand(),Hand(),Hand(),Hand()]
 poke1=Poke()
 poke1.populate()   #カードのデッキを生成する
 poke1.shuffle()    #シャッフル
 poke1.deal(players,13)  #各プレイヤーに13枚のカード
 # 4人のプレーヤーのカードを表示する
 n=1for hand in players:print("ポーカープレイヤー",n,end=":")print(hand)
 n=n+1input("\nPress the enter key to exit.")

これで、pythonがゲームを開発できるかどうかについての記事は終わりです。より関連性の高いpythonコンテンツについては、ZaLou.Cnの以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後、ZaLou.Cnをさらにサポートしていただければ幸いです。 !

Recommended Posts

pythonはゲームを開発できますか
Pythonでできること
Pythonは地雷除去ゲームを実装しています
pythonクローラーは何をクロールできますか
OpenCVPythonはパズルゲームを実装しています
pythonが使用できるデータベース
pythonコレクションでできること
Pythonは公式アカウントも分析できます
pythonは主流の言語になることができますか?
Pythonはスタックの構造を実装できますか?
Pythonを使用して飛行機の戦争ゲームを作成する
プログラミングの基礎なしでpythonを学ぶことはできますか
変数タイプをpythonで宣言できますか
pythonはどのような作業を行うことができますか