2017-05-08 5 views
1

私はPython 34(pygameではなく)でテキストベースのアドベンチャーゲームを作成しています。私は文字のクラスを持っています。私はこれらの文字を2つのリストに分けました:良いものと悪いもの。私はそれらの間に一連の戦いがありますが、もし死ぬなら、リストからキャラクターを取り除く方法を理解することはできません。戦いは無作為であるので、異なるキャラクターが毎回勝つ。つまり、誰が戦いに勝つかによって、キャラクターをリストから削除するコードが必要になる。あなたがリストから削除される要素のインデックスを知っている場合条件文の間にどのように要素をリストから削除しますか?

答えて

0

、あなたが行うことができます:あなたは、リストから削除する要素の値を知っている場合

yourlist.pop(index_of_the_element_to_be_removed) 

は、あなたが行うことができます。

yourlist.pop(yourlist.index(value_of_the_element_to_be_removed)) 

あなたが値を持つすべての要素を削除したい場合は、あなたが行うことができます:あなたが呼び出すことができます

[e for e in yourlist if e!=value_of_the_element_to_be_removed] 
+0

注意2行目のコードは、文字列の最初の 'value_of_the_element_to_be_removed'だけを削除します。 Allen mentioendとして –

0

あなたが削除している文字を渡す場合は、あなたの良いリストと悪いリストでremove()を実行します。

good_list.remove('good_guy') 

または

bad_list.remove('bad_guy') 
+0

を使用する場合は、list.pop() –

0

私の理解に基づいて、私は、各ラウンドのランダムな1-VS-1の戦いをシミュレートしてみました。 good3_bird は邪悪な戦闘機のまま:evil1_elephantをevil1_elephant との戦いでgood3_bird 良い失われたgood1_foxとの戦いにevil2_lionを失った悪が良い戦闘機のままevil1_elephant との戦いで結果

良い失われたgood2_tigerを印刷

import random 
from __future__ import print_function 
characters = ['good1_fox','evil1_elephant','good2_tiger','evil2_lion','good3_bird','evil3_chicken'] 
# Try to split characters into two lists 
good = [x for x in characters if 'good' in x] 
evil = [x for x in characters if 'evil' in x] 
# Total round of fight 
n = 3 
for i in xrange(n): 
    good_fighter = random.choice(good) 
    evil_fighter = random.choice(evil) 
    # set the condition of winning 
    if len(good_fighter) >= len(evil_fighter): 
     # Remove fighter from the list 
     evil.remove(evil_fighter) 
     print("evil lost {} in fighting with {}".format(evil_fighter, good_fighter))  
    else: 
     # Remove fighter from the list   
     good.remove(good_fighter) 
     print("good lost {} in fighting with {}".format(good_fighter, evil_fighter))  
print("Remained good fighters: {}\nRemained evil fighters: {}\n".format(", ".join(good),", ".join(evil))) 

== 、evil3_chicken

== これはあなたの欲しいものですか?

関連する問題