Cara ou Coroa - Jogando Dados - Com orientação a Objetos em Python

Neste tutorial de nosso curso de Python, vamos programar dois jogos
Cara e Coroa
Lançamento de Dados

Usando os conceitos de programação orientada a objetos que estamos estudando.
Baixe nossa Apostila de Python
Obtenha o certificado do Curso de Python para trabalhar programando (de casa!)

Cara ou Coroa com Orientação a Objetos

Primeiro, importamos a biblioteca random, para gerar números aleatórios em Python.

Nossa classe vai se chamar CaraCoroa e vamos armazenar o lado da moeda na variável lado.
No método construtor __init__ inicializamos essa variável como 'Cara', como se nossa moeda estivesse inicialmente virada com a Cara pra cima.

Depois, definimos o método lancar(), que vai lançar a moeda.
Vamos gerar números aleatórios de 0 até 1. Ou seja, pode sair 0 ou 1 quando usamos:
random.randint(0,1)

Se sair 0, o resto da divisão por 2 dá 0, cai no IF e setamos o lado da moeda como 'Cara'.
Se der 1, o resto da divisão por 2 dá 1, cai no ELSE e setamos o lado da moeda como 'Coroa'.

No final, retornamos essa variável.

Prontinho, agora é só criar nosso objeto moeda, do tipo CaraCoroa.
Perguntamos ao usuário se ele deseja sair ou lançar mais uma vez, e cada vez que ele quiser lançar a moeda, basta acessar o método lanca() do objeto moeda que ele vai retornar Cara ou Coroa.

Código Python:

import random

class CaraCoroa:
 def __init__(self):
  self.lado = 'Cara'
  
 def lancar(self):
  if (random.randint(0,1))%2==0:
   self.lado = 'Cara'
  else:
   self.lado = 'Coroa'
  return self.lado
  
moeda = CaraCoroa()
op=1

while op:
 op=int(input("0.Sair\n"
       "1.Jogar de novo\n"))
 
 if op:
  print(moeda.lancar())

Jogando dados com Programação Orientada a Objetos em Python

Vamos agora criar a classe Dado.

Ela vai ser bem semelhante a classe CaraCoroa, diferença é que vamos trabalhar com números de 1 até 6, ao invés de duas strings ('Cara' e 'Coroa').


Inicializamos o lado do dado como 1.
No método lancar, simplesmente retornamos um número de 1 até 6:
return random.randint(1,6)

Criamos nosso objeto dado do tipo Dado.
E prontinho.
Ajeitamos nosso menu, para que você possa lançar tanto dados como moedas, e veja como ficou nosso script em Python:

import random

class CaraCoroa:
 def __init__(self):
  self.lado = 'Cara'
  
 def lancar(self):
  if (random.randint(0,1))%2==0:
   self.lado = 'Cara'
  else:
   self.lado = 'Coroa'
  return self.lado

class Dado:
 def __init__(self):
  self.lado = 1
 def lancar(self):
  return random.randint(1,6)
  
moeda = CaraCoroa()
dado = Dado()
op=1

while op:
 op=int(input("0.Sair\n"
       "1.Lançar Moeda\n"
       "2.Lançar dado\n"))
 
 if op==1:
  print(moeda.lancar())
 elif op==2:
  print(dado.lancar())

Sempre que faltar uma moeda ou um dado, você pode usar esse script :)

Nenhum comentário:

Postar um comentário