質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

1回答

678閲覧

python プログラム クラス

poppo12355

総合スコア3

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/11/11 21:43

編集2020/11/11 22:26

import random
class Chara:
def init(self,name,power):
self.name = name
self.power = power
self.life = True

def getName(self): return self.name def fight(self,punch): if self.check('punch')==True: self.power += 10 else: self.power -= 10 def check(self, life): if self.power >= 0: return True else: return False

myYusha = Chara('勇者',50)
enemy1 = Chara('ショッカー',10)
enemy2 = Chara('ジコチュー',10)
lastBoss = Chara('ラスボス',30)

enemies = [enemy1,enemy2,lastBoss]

for enemy in enemies:
print(myYusha.getName(),'と',enemy.getName(),'が戦います')

while True: n = random.randint(1,10) print(n,end=': ') if n%2==0: print(myYusha.getName(),'がパンチ') myYusha_life = myYusha.fight('punch') enemy_life = enemy.fight('ouch') if myYusha_life==False: print(myYusha.getName(),'は倒されました') break elif enemy_life==False: print(enemy.getName(),'は倒されました') else: print(enemy.getName(),'がパンチ') myYusha_life = myYusha.fight('ouch') enemy_life = enemy.fight('punch') if myYusha_life==False: print(myYusha.getName(),'は倒されました') break elif enemy_life==False: print(enemy.getName(),'は倒されました') break if myYusha_life==False: break

このプログラムを実行すると勇者とショッカーが無限にパンチし続けます
どうすれば抜け出せるか教えてほしいです

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

toast-uz

2020/11/11 22:47

質問記入画面を再度よくみて、以下修正ください。 ・表題は質問したいことを表してください。 ・コードはコードとして表示されるようにしてください。 あと、なぜこのような質問をしたいのか、ご自分で作ってみてうまくいかなくて悩んでいるのか、単純な興味でどこに書かれているコードを動かしてみたのか、等も記述いただくと、回答がつきやすくなります。
y_waiwai

2020/11/12 00:01

このままではコードが読めないので、質問を編集し、<code>ボタンを押し、出てくる’’’の枠の中にコードを貼り付けてください
guest

回答1

0

ループの脱出条件は、基本的にfightメソッドの戻りがfalseになること
現状、fightメソッドを呼び出してもfalseになることはないので、無限に戦い続けることになります。
どうすれば抜けられるか。
それは神であるあなたがどのような時に戦いをやめさせるか次第ではないでしょうか。

現状ではpowerも減少することはなく、lifeもfalseになることはありません。
神々の戦いにおいて誰も傷つかず、疲弊することもないので、永遠に戦いが終わることはありません。
ですから、checkメソッドもtrueしか返しません。

戦うとは何かを表現しなくてはなりません。
戦う際に、powerはどのような影響を与え、
戦った結果、どのようにlifeに影響を与えるのでしょうか。
それを決め、決め事に従い実装しなくてはなりません。

投稿2020/11/12 07:03

t_obara

総合スコア5488

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問