2011-11-07 11 views
-1

私は非常に基本的なpythonゲームを作成しています。私はこのステップで助けが必要です。ゲームのコンセプトは、プログラムが2つのダイをロールして合計を加算することです。その番号で、番号リスト(1-10)から「ペグ」まで利用可能な番号を選択できます。彼らはすべての数字が固定されるか、オプションから外れるまで続ける。プログラムの初期に、私はこのステップで使用している2つの関数を作成しました。これら2つはask_numberとvalid_movesです。基本的に尋問番号は、彼らが釘付けたい番号を尋ねるだけですが、実際に番号を釘付けにしません。 valid_moves関数は、プレイヤーがまだ選択可能な番号を確認するだけです。リストを扱うPythonゲームを作成する

 
------------------------------ 
(1)(2)(3)(4)(X)(6)(7)(X)(9)(X) 
------------------------------ 

Xが既に釘付けにされた番号です。

ゲームはかなりちょうど途中で次のようになります。ゲームのこの部分では、数字を「X」に置き換える方法を理解する必要があります。私はこれまでこれを持っていますが、私は道が途絶えていることを知っています。私は何をすべきかを考え出すことに問題があります。 (pegholesはリストの名前で、moveはask_number関数で選んだ番号です)。本当にありがとう!

PEGGED = "X" 

def enter_peg(pegholes, roll, total): 
    ask_number() 
    if ask_number == valid_moves(): 
     pegholes.append(ask_number(PEGGED)) 

     return pegholes, move 

答えて

1

私は本当にあなたのゲームが動作するようになっているかわかりませんが、これはあなたを助けることがあります。

#!/usr/bin/env python 

import random 
import sys 

pegs = range(2, 11) 

def roll_dice(): 
    return random.randint(1, 5) + random.randint(1, 5) 

while True: 
    roll = roll_dice() 
    print "You rolled %s" %roll 
    available_choices = set(p for p in pegs if p != 'X') - set(range(roll+1, 11)) 
    if len(available_choices) == 0: 
     print "FAIL SAUCE" 
     sys.exit() 
    while True: 
     choice = raw_input("Choose a number %s: " % (", ".join(str(x) for x in sorted(list(available_choices))))) 
     if choice == 'q': 
      sys.exit() 
     choice = int(choice) 
     if choice in available_choices: 
      break 
     print "Nice try buddy... pick a number in range, that hasn't been picked" 
    pegs[choice - 2] = 'X' 
    print "".join("(%s)" % p for p in pegs) 
    if len([x for x in pegs if x == 'X']) == 9: 
     print "WINNER!" 
     sys.exit() 
0

私はあなたが何をしようとしてでは明らかではありませんよ...

  • 「加算する」と言うと、加算して合計を得ることを意味します。
  • 標準ダイスは12まで追加し、2個のダイスを使用すると、2から行きたい公正なゲームのように1合計することはできません - あなたはこのような何かを試みることができる12

import random 


#set up list of numbers from 2 to 10 
numlist = [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] 

#create a roll dice function, producing the sum of two random integers 1-6 
def rolldice(): 
    return (random.randint(1,6) + random.randint(1,6)) 

#run the rolldice function 
roll = rolldice() 

#set up a loop for while the sum of the roll appears in the list 
while roll in numlist: 
    print "Your rolled %s" %roll 
    print "Your list was", numlist 

    print "Replacing %s with X" %roll 

    numlist[numlist.index(roll)]="X" 
    print "Your new list is", numlist 
    raw_input("Press enter to roll again") 
    roll = rolldice() 

#once a roll not in the list show up: 
print "Your roll was %s" %roll 
print "This is not in your list" 

をまた、別のif文を追加して、ロールがリストにない場合に再試行するかどうかをユーザーに尋ねることができます。その後、whileループに戻ります。

私はこの最後の夏のすべてを初めて知り、まだ学んでいます。ちょっと違うことを試してみてください...あなたは間違いから学びます。

関連する問題