2017-06-23 19 views
0

私と私の友人は学校でプロジェクトに取り組んでいますが、なぜエラーが出てくるのか理解していますが、私たちはそれを正しく数えていると確信しています。インデックスでは0から始まりますが、まだ間違っています。私たちの仕事は、プレイヤーを7x7グリッドの周りに移動させるゲームを作成することですが、同じファイルに格納しているコードの外からいくつかのゲームメッセージを挿入する必要があります。私たちは助けを求めることができます。ここ は!:インデックスエラー:リストのインデックスが範囲外(python 3.2)

import random 


counter1 = 0 

counter2 = 0 


print("***********************************BOARD GAME**********************************") 

print(" ") 

print("***********************************GAME RULES**********************************") 

print(" ") 

print("----------------------------Game is for 2 players only-------------------------") 

print(" ") 

print(">The game board is a 10x5 board going up to 49") 

print(" ") 

print("40 41 42 43 44 45 46 47 48 49") 

print("39 38 37 36 35 34 33 32 31 30") 

print("20 21 22 23 24 25 26 27 28 29") 

print("19 18 17 16 15 14 13 12 11 10") 

print("0 1 2 3 4 5 6 7 8 9 ") 

print(" ") 

print(">The objective is to be the first player to reach space 49") 

print(" ") 

print(">There are 2 die, if you roll the same number twice, you will go back the number of spaces you rolled") 

print(" ") 

print(">If you land on spaces 27, 31 and 47, you will go back to space 24") 

print(" ") 

print(">Press ENTER to play") 

input() 


print("**********************************START GAME***********************************") 

input() 


print("Starting positions for both players = 0") 

print(" ") 


newfile=open("Game Messages.txt","r") 

print(newfile.readlines()[0]) 

dice1 = random.randint(1,6) 

print("dice 1 =",dice1) 

dice2 = random.randint(1,6) 

print("dice 2 =",dice2) 

dicetotal = dice1 + dice2 

print("dice total =",dicetotal) 

if dice1 == dice2: 

    counter1 = counter1 - dicetotal 

    print(newfile.readlines()[1]) #This is one of the lines that is coming up as an error 


else: 

    counter1 = counter1 + dicetotal 

print("P1 space =",counter1) 

if counter1 == 47: 

    counter1 = 24 

    print(newfile.readlines()[2]) 

if counter1 == 27: 

    counter1 = 24 

    print(newfile.readlines()[3]) 

if counter1 == 31: 

    counter1 = 24 

    print(newfile.readlines()[4]) 

if counter1 >= 49: 

    print(newfile.readlines()[5]) 

    print("end game end game end game end game end game end game end game end game end game") 

    print("Press ENTER to exit the game") 

    exit() 

    input() 

input() 

newfile.close 


newfile = open("Game Messages.txt.","r")  

print(newfile.readlines()[6]) 

dice1 = random.randint(1,6) 

print("dice 1 =",dice1) 

dice2 = random.randint(1,6) 

print("dice 2 =",dice2) 

dicetotal = dice1 + dice2 

print("dice total =",dicetotal) 

if dice1 == dice2: 

    counter2 = counter2 - dicetotal 

    print(newfile.readlines()[7])  #This is one of the lines that is coming up as an error 

else: 

    counter2 = counter2 + dicetotal 

print("P2 space =",counter2) 

if counter2 == 47: 

    counter2 = 24 

    print(newfile.readlines()[8]) 

if counter2 == 27: 

    counter2 = 24 

    print(newfile.readlines()[9]) 

if counter2 == 31: 

    counter2 = 24 

    print(newfile.readlines()[10]) 

if counter2 >= 49: 

    print(newfile.readlines()[11]) 

    print("end game end game end game end game end game end game end game end game end game") 

    print("Press ENTER to exit the game") 

    exit() 

    input() 

input() 

newfile.close 

答えて

0
Actually the problem is getting the file contents from Game Messages.txt. 
    So, first the whole file contents need to be converted into list. 

**Please follow this procedure in your program first** 
    with open('Game Messages.txt', 'r') as infile: 

     data = infile.read() # Read the contents of the file into memory. 

    # Return a list of the lines, breaking at line boundaries. 
    my_list = data.splitlines() 
    print (my_list) #It will give whole file contents as an array 
    #Eg : ['game message1', 'game message2', 'game message3', 'game message4', 'game message5'] 
    print (my_list[3]) # It will display game message 4 
    So in your program 
    instead of 
    if dice1 == dice2: 

    counter2 = counter2 - dicetotal 

    print(newfile.readlines()[7])  #This is one of the lines that is coming up as an error 

    else: 

    counter2 = counter2 + dicetotal 
    it will be 
    if dice1 == dice2: 

    counter2 = counter2 - dicetotal 

    print(my_list[3])  #You need to give exact line number, in case 4th means it #will be my_list[3] as array index starts with 0 only 
    else: 

    counter2 = counter2 + dicetotal 

    Hope that helps 
+0

を助けてくださいコードですありがとうございました!!!あなたは私たちの仕事を救った!私たちが苦労していたほど、あなたに感謝することはできません。私たちは数ヶ月間だけこれをやってきました!ありがとうございました! –

関連する問題