Rock-paper-scissors-lizard-Spock – Coursera.org mini-project

Acabei de terminar meu primeiro mini-projeto (que está atrasado, mas isso ocorreu por que eu estava muito ocupado estudando outras coisas) do curso a distância An Introduction to Interactive Programming in Python realizado por professores da Rice University, esse também é meu primeiro programa escrito em Python que tem uma função muito maior que somar números. Os comentários e variáveis estão escrito em inglês, pois o curso é em inglês. O tema do mini projeto era fazer um jogo não interativo que jogasse o jogo Rock-paper-scissors-lizard-Spock (Pedra-papel-tesoura-lagarto-Spock) que é uma variação do Pedra-papel-tesoura mencionado pelo Sheldon (personagem da série de tv americana The Big Bang Theory – adoro esse seriado) em três episódios da série (este artigo na Wikipédia explica o funcionamento do jogo). Espero que gostem.

# Rock-paper-scissors-lizard-Spock - Coursera.org mini-project

# Written by Igor Hipólito Vieira (Zignd)

# The key idea of this program is to equate the strings
# "rock", "paper", "scissors", "lizard", "Spock" to numbers
# as follows:
#
# 0 - rock
# 1 - Spock
# 2 - paper
# 3 - lizard
# 4 - scissors

import random

def number_to_name(number):
    """ Responsible for the conversion of number to corresponding name """

    # uses conditional structure if/elif/else to convert number to the corresponding name
    if number == 0:
        name = "rock"
    elif number == 1:
        name = "Spock"
    elif number == 2:
        name = "paper"
    elif number == 3:
        name = "lizard"
    else:
        name = "scissors"

    return name

def name_to_number(name):
    """ Responsible for the conversion of name to corresponding number """

    # uses conditional structure if/elif/else to convert name to the corresponding number
    if name == "rock":
        number = 0
    elif name == "Spock":
        number = 1
    elif name == "paper":
        number = 2
    elif name == "lizard":
        number = 3
    else:
        number = 4

    return number

def rpsls(guess):
    # convert name to player_number using name_to_number
    player_number = name_to_number(guess)

    # compute random guess for comp_number using random.randrange()
    comp_number = random.randrange(0, 5)

    # compute difference of player_number and comp_number modulo five
    difference_pnum_cnum = (player_number - comp_number) % 5

    # use if/elif/else to determine winner
    if difference_pnum_cnum == 1:
        winner = "Player"
    elif difference_pnum_cnum == 2:
        winner = "Player"
    elif difference_pnum_cnum == 3:
        winner = "Computer"
    elif difference_pnum_cnum == 4:
        winner = "Computer"
    else:
        winner = "Draw!"

    # prints player choice
    print("Player chooses", guess)

    # prints computer choice
    print("Computer chooses", number_to_name(comp_number))

    # print results
    if winner == "Draw":
        print(winner)
    else:
        print(winner + " wins!")

    print("")

def main():
	# Program header
	print("\tRock-paper-scissors-lizard-Spock - mini-project\n\n")

	# test your code
	rpsls("rock")
	rpsls("Spock")
	rpsls("paper")
	rpsls("lizard")
	rpsls("scissors")

	return 0

if __name__ == '__main__':
	main()

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s