2017-10-07 2 views
1

私のゲームでアチーブメントシステムを使用しようとしています。ゲームはクッキークリッカーのようなもので、 "L"という文字を何度も入力して入力し、各タイプで行われるエフェクトをアップグレードすることができます。私はあなたが1000のような特定の金額のコインを得たときにそうしようとしていますが、それはあなたが1000コインの達成を達成したことを表示しますが、それはうまくいかないようです。pycharmを使ったIDLE pythonゲームとのアチーブメントシステム

if coins == 1000: 
    print("") 
    print("You have a new achievement!") 
    print("[✔] - Earn 1,000 points") 
    print("You have 1/6 coin achievements") 
    print("") 
if coins == 10000: 
    print("") 
    print("You have a new achievement!") 
    print("[✔] - Earn 10,000 points") 
    print("You have 2/6 coin achievements") 
    print("") 
+0

コードの正しいタブがありますか? – JClassic

+0

どういう意味ですか、うまくいかないのですか?あなたはここのようにインデントされていますか? –

+0

あなたのような字下げがありましたが、間違って貼り付けられました。私はエラーを起こさない、それはちょうどゲームでは動作しません。私はそれを設定しているだけで、それは印刷されます: "[✔] - 10000点を獲得する"は、正確に1000点を取得すると常に機能しない場合、私は980点を持っていたので、メッセージの上をスキップしてください。だから私は1000以上にしようとしましたが、それはより多くのポイントを獲得するたびに「[✔] - 10,000ポイントを獲得します」と表示されました。それが表示される方法はありますか:「[✔] - 10,000ポイントを獲得する」とは、1000ポイント以上を獲得して一度だけ表示することです。 –

答えて

0

編集:OPは質問は私にはもう少し明確だコメントを追加しました後ここでは、コードです。たぶん、あなたは(OPコードの最小実行中の平和を提供しなかったとして、もちろん単なる一例である)次のことを試みることができる:もちろん

# -*- coding: utf-8 -*- 

numCoinAchievements = 0 
nextCoinLevel = 1000 

for coins in range(0, 100000, 33): 
    if coins >= nextCoinLevel: 
     numCoinAchievements += 1 

     if numCoinAchievements == 1: 
      nextCoinLevel = 10000 
     elif numCoinAchievements == 2: 
      nextCoinLevel = 15000 
     else: 
      break 
    print("") 
    print("You have a new achievement!") 
    print("[✔] - Earn %d points" % nextCoinLevel) 
    print("You have %d/6 coin achievements" % numCoinAchievements) 
    print("") 

を、あなたのニーズにコードを熟達する必要がありますが、それが必要問題を明確にする!

1

あなたの問題は、間違ったコンパレータを使用していることです。 ==を使用している場合。値が正確に等しいかどうかチェックしています。プレイヤーが値を「達成」するときに興味があるので、コンパレータを>=に切り替えてください。そうすれば、プレーヤーが980から1001ポイントになると1001 >= 1000Trueと評価されます。

注これはので、おそらく次のようなものが有用であろう、彼らはすでに実績を持っている場合でも、テキストあなたがチェックするたびに印刷されます:私は間違いなくだろうPが提供する

has_1000_achievement = False 
has_10000_achievement = False 

if coins >= 1000 and not has_1000_achievement: 
    has_1000_achievement = True 
    print("") 
    ... 

ソリューション私はあなたが現在のレベルで流暢に理解する準備ができていないと信じています。

+0

しかし、それが> 10000であれば、それでもまだ...比較する必要があるので<10000 –

+0

良い点、私は私の答えを更新します。 –

+0

複雑さはほとんど同じではありませんか? –

関連する問題