创建一个python游戏,处理列表

时间:2011-11-07 23:00:45

标签: python

所以我正在创建一个非常基本的python游戏,我需要一些帮助,我坚持这一步。游戏的概念是让程序滚动两个模具并添加总和。使用该号码,他们可以从号码列表(1-10)中选择一个号码来“挂钩”。他们继续前进,直到所有数字都被挂钩或者没有选择。在程序的早期,我创建了两个我在此步骤中使用的函数。这两个是ask_number和valid_moves。问号基本上只是询问他们要挂哪个号码,但实际上并没有挂号。 valid_moves函数只检查哪些数字仍可供玩家选择。

游戏几乎就是这样:#/ p>

------------------------------
(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

2 个答案:

答案 0 :(得分: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()

答案 1 :(得分:0)

我不清楚你要做什么......

  • 当你说“加上总和”时,你的意思是将它们加在一起得到一笔钱,对吗?
  • 标准骰子加起来为12,两个骰子不能合计为1,所以对于一个公平的游戏,你想要从2 - 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循环。

继续努力 - 去年夏天,我对这一切都很陌生,我还在学习。只是继续尝试不同的事情......你将从错误中吸取教训。