-1

わかりました、ここで質問するのはこれが初めてなので、良い質問でなくても怒らないでください. サイコロが振られるイメージを表す 6 つの関数があります。プログラミング用のクラップスゲームを作らなければなりません。ゲーム自体は完璧に実行されていますが、サイコロを並べて表示するのではなく、並べて表示する必要があります。例えば:

I have this:
+------+
|  *   |
|  *   |
+======+
+------+
|  *   |
|  *   |
+------+

I need this:
+------+  +------+
|  *   |  |  *   |
|  *   |  |  *   |
+------+  +------+

Here is my program so far:

import random

def roll_dice1():
    print "+-------+"
    print "|       |"
    print "|   *   |"
    print "|       |"
    print "+-------+"
def roll_dice2():
    print "+-------+"
    print "| *     |"
    print "|       |"
    print "|     * |"
    print "+-------+"    

def roll_dice3():
    print "+-------+"
    print "| *     |"
    print "|   *   |"
    print "|     * |"
    print "+-------+"    

def roll_dice4():
    print "+-------+"
    print "| *   * |"
    print "|       |"
    print "| *   * |"
    print "+-------+"    

def roll_dice5():
    print "+-------+"
    print "| *   * |"
    print "|   *   |"
    print "| *   * |"
    print "+-------+"

def roll_dice6():
    print "+-------+"
    print "| * * * |"
    print "|       |"
    print "| * * * |"
    print "+-------+"    

def dice_roll():
    counter = 0
    dice = []
    while counter < int(2):
        dice += [random.randint(1,6)]
        counter += 1    
    i = 0 
    while i < 2:
        if dice[i] == 1:
            roll_dice1()
        elif dice [i] == 2:
            roll_dice2()
        elif dice [i] == 3:
            roll_dice3()
        elif dice [i] == 4:
            roll_dice4()
        elif dice [i] == 5:
            roll_dice5()
        elif dice [i] == 6:
            roll_dice6()     
        i += 1    
    roll = dice
    return roll

def point_cycle():
    raw_input( "Press <Enter> to roll the dice")
    roll = dice_roll()
    total1 = int(roll[0]) + int (roll[1])  
    if total1 == 7:
        print "You rolled a 7."
        print "You lose!"
    elif total1 == total:
        print "You rolled a " + str(total1)
        print "You win!"
    else:
        print "You rolled a " + str(total1)
        point_cycle()


def main():
    print "Craps: A Popular Dice Game"
    raw_input( "Press <Enter> to roll the dice")
    roll = dice_roll()
    total = int(roll[0]) + int (roll[1])
    if total == 7 or total == 11:
        print "You rolled a " + str(total) + " on your first roll."
        print "You win!"
    elif total == 2 or total == 3 or total == 12:
        print "You rolled a " + str(total) + " on your first roll."
        print "You lose!"
    else:
        print "You rolled a " + str(total) + " on your first roll."
        print " "
        print "Thats your point. Roll it again before you roll a 7 and lose!"
        point_cycle()
    global total    

main()
4

1 に答える 1

0

Pythonを使用していると仮定すると、開始するための迅速で汚い解決策は次のとおりです。

# Save the dices in a way that allows you to access each line separatedly
DICES = (None, 
         ("+-------+", "|       |", "|   *   |", "|       |", "+-------+"),  # dice 1
         ("+-------+", "| *     |", "|       |", "|     * |", "+-------+"),  # dice 2
         <put here the tuples with the other lines of each dice>)

次のような関数を使用します。

def print_dices(diceslist):
    for i in range(5):
        for dicenum in dicelist:
            print DICES[dice][i] + " ",
        print 

diceslist は次のような結果のリストです: (1,3,4)

もちろん、はるかに洗練された/最適化されたソリューションがありますが、これは十分にシンプルであり、許容できる方向性を示している可能性があります

于 2013-03-20T21:01:01.800 に答える