我在python中创建了一个棋盘游戏

时间:2017-11-19 12:21:43

标签: python

我有一个练习要做,而且我被卡住了。我不得不用python编写的棋盘游戏Alak,我不得不知道。我可以将execrcise与规则链接起来,这样你就可以更好地帮助我了。代码具有主要部分和具有所有过程和功能的库。

    from Library_alak import *
n = 0
while n < 1:
    n = int(input('Saisir nombre de case strictement positif : '))
loop = True
player = 1
player2 = 2
removed = [-1]
board = newboard(n)
display(board, n)

while loop:
    i = select(board, n, player, removed)
    print(i)
    board = put(board, player, i)
    display(board, n)
    capture(board, n, player, player2)
    loop = True if again(board, n, player, removed) is True else False
    if player == 1 and loop:
        player, player2 = 2, 1
    elif player == 2 and loop:
        player, player2 = 1, 2
win(board, n)
print(win(board, n))

这是图书馆:

def newboard(n):
    board = ([0] * n)
    return board


def display(board, n):
    for i in range(n):
        if board[i] == 1:
            print('X', end=' ')
        elif board[i] == 2:
            print('O', end=' ')
        else:
            print(' . ', end=' ')


def capture(board, n, player, player2):
    for place in range(n):
        if place == player:
            place_beginning = place
            while board[place] != player:
                place_end = place
            if board[place + x] == player:
                return board
            else:
                return board


def again(board, n, player, removed):
    for p in board(0):
        if p == 0:
            if p not in removed:
                return True
            else:
                return False


def possible(n, removed, player, i, board):
    for p in range(n + 1):
        if p == 1:
            if board[p-1] == 0:
                if p not in removed:
                    return True
                else:
                    return False


def win(board, n):
    piecesp1 = 0
    piecesp2 = 0

    for i in board(0):
        if i == 1:
            piecesp1 += 1
        else:
            piecesp2 += 1
        if piecesp1 > piecesp2:
            print('Victory : Player 1')
        elif piecesp2 > piecesp1:
            print('Victory : Player 2')
        else:
            return 'Equality'


def select(board, n, player, removed):
    loop = True
    while loop:
        print('player', player)
        i = int(input('Enter number of boxes : '))
        loop = False if possible(n, removed, player, i, board)is True else True
        return i


def put(board, player, i):
    i -= 1
    if board[i] == 0:
        if player == 1:
            board[i] = 1
            return board
        else:
            board[i] = 2
            return board
    else:
        put(board, player, i)

所以我的问题是我的错误很少,第一个问题就是当我输入数字&#39; 1&#39;当被要求输入一些盒子(这是玩的地方)时没有任何反应。然后当输入任何其他数字时,错误是:if board [place + x] == player: NameError:name&#39; x&#39;没有定义 或者似乎有一个问题:if board [place + x] == player: NameError:name&#39; x&#39;未定义

如果有人能帮助我,我会非常感激。我意识到它可能没有它应该的那样详细,而且你可能不会得到它,但你可以联系我以获得更多。

Alak游戏规则:

  

黑色和白色轮流将石头放在线上。与Go不同,如果有移动,这个位置是强制性的;如果无法移动,游戏就结束了。

     

在另一块石头占据的位置,或者刚刚移除了您自己颜色的石头的位置,不得放置任何石头。后一种情况使得游戏不会进入一个无休止的石头放置和捕获循环,在Go as ko中已知。

     

如果放置一块石头会导致一组或两组敌人不再拥有任何相邻的空地 - 像Go一样自由 - 那么这些石头就会被移除。如上述规则所述,对手可能不会在下一回合在这些位置上比赛。

     

如果放置一块石头会导致一组或两组你自己的颜色不再具有任何自由,那么这些石头就不是自杀的,而是安全的,不会从游戏中移除。

1 个答案:

答案 0 :(得分:-2)

你不应该使用“player2”作为变量,这是一种更简单的方法,只需使用根据玩家取值1或2的“玩家”。你知道,类似的东西:如果x%2 = = 0,则播放器= 1 而x只是从0开始直到游戏结束的增长。