Python Forum
Assign 1 player to the computer - Printable Version

+- Python Forum (https://python-forum.io)
+-- Forum: Python Coding (https://python-forum.io/forum-7.html)
+--- Forum: General Coding Help (https://python-forum.io/forum-8.html)
+--- Thread: Assign 1 player to the computer (/thread-29020.html)



Assign 1 player to the computer - ironic100 - Aug-14-2020

Hi all,

Nice to be here :) I'm brand new to python so please be nice!

I have this 'last one loses' game to do. I cannot, for the life of me, get 1 player to be the computer so basically it's me against the computer. The computer choses a number randomly between 1 & 3. It's based on the game of nim. I have it working so both players require human input, but I want it so 1 is human and 1 is the computer. Any idea where i'm going wrong please?

#last one loses game

#import random module
import random

#assign random play to the computer
computer = (random.randint(1,3))

#set player to false
player = False

#set initial state
state = 0
while state < 10 or state > 51:
    state = int(input("Enter counter number between 10 and 50 "))
    
#initial number of counters
print ("The number of counters is ", state)

#get valid move and set player to True
while player == False:
    if state == 1:
        print("The computer has taken 1 counter")
    if state == 2:
        print("The computer taken 2 counters")
    if state == 3:
        print("The computer chosen 3 counters")
        remainingCounters(state)

    print("player ",player)
    while True:
        move=int(input("How many counters would you like to remove? "))
        if move in [1,2,3] and move<state:
            break
        print("Please only choose up to 3 counters!")
    
    #update state
    state=state-move


    #show state
    print("The remaining number of counters is now ", state)


    #check win status - win or lose
    if state == 1:
        print("Player ",player, " wins!")
        break

    #switch players 2->1, 1->2 then go back to valid move line
    ##if player==1:
   ## player=2
   ## else:
      ##  player=1

print("Game over")



RE: Assign 1 player to the computer - spalisetty06 - Aug-14-2020

First of all, while loop condition is wrong

state = 0
while state > 10 or state < 51:
    state = int(input("Enter counter number between 10 and 50 "))

please tell me how the game works?


RE: Assign 1 player to the computer - GOTO10 - Aug-14-2020

Your player = False and the accompanying logic at the start of your loop (lines 21-28) isn't really accomplishing anything at this point. In a game with only two players, you don't necessarily need to use a variable to keep track of whose turn it is. A simple way to handle having one human and one computer player is to include both turns in your main game loop. You get the player's move, apply it, check if the game is over, then do the same for the computer move. Break out when the game ends.

This pseudocode is not at all complete, but gives you the basic idea:

while True:
    print('Number of counters', state)

    human_move = int(input('Enter your move'))
    state = state - human_move
    if state == 1:
        print('Human wins')
        break

    print('Number of counters', state)

    computer_move = random.randint(1, 3)
    print('Computer move is', computer_move)
    state = state - computer_move
    if state == 1:
        print('Computer wins')
        break