Детская игра в карточки, написана за один выходной
от 2 до 4 игроков
На каждой карточке 3 случайные цифры
Цифры у игроков сравниваются поочерёдно
У кого больше максимальных цифр, тот победил
Очки — количество побед
Игра запускается в консоли, но формирует html-страницу game.html,
которую можно открыть в браузере
Как играть
- зарускаем «python3 cards.py»
- вводим количество игроков
- вводим имена игроков
- нажимаем Enter после каждого хода —
компьютер «раздаёт» игрокам новые карточки
и смотрит, кто победил
Код игры cards.py:
#-*-coding:utf-8;-*-
from random import randint, sample
from os import listdir
from os.path import isfile
# класс игрока
class Player:
def __init__(self, name):
self.name = name
self.value1 = 0
self.value2 = 0
self.value3 = 0
self.score = 0
def nextTurn(self):
self.value1 = randint(1, 105)
self.value2 = randint(1, 105)
self.value3 = randint(1, 105)
class HtmlPage:
def __init__(self):
self.card_images = [f for f in listdir('./cards')]
def update(self, game):
f = open('game.html','w')
self.content = '''<!DOCTYPE>
<html>
<head>
<title>Карточки</title>
<!--meta http-equiv="content-type" content="text/html; charset=utf-8" /-->
<meta http-equiv="Refresh" content="3" />
<link rel="stylesheet" type="text/css" href="cards.css" />
</head>
<body>
<div class='game'>
'''
for p in game.players:
self.content += '''
<div class='player'>
<h2 class='name'>%s</h2>
<div class='score'>%s очков</div>
<div class='card'>
<img src='cards/%s'>
</div>
<div class='value value1'>%s</div>
<div class='value value2'>%s</div>
<div class='value value3'>%s</div>
</div>
''' % (p.name, p.score, sample(self.card_images,1)[0], p.value1, p.value2, p.value3)
self.content += "<div class='congrats'>Победитель - %s!</div>" % (game.last_winner)
self.content += '</div><!--game--></body></html>'
f.write(self.content)
f.close()
# игра
class Game:
def __init__(self):
self.players = []
def nextTurn(self):
values1 = []
values2 = []
values3 = []
for p in self.players:
p.nextTurn()
print('Игрок %s: %s %s %s' % (p.name, p.value1, p.value2, p.value3))
values1.append(p.value1)
values2.append(p.value2)
values3.append(p.value3)
max_value1 = max(values1)
max_value2 = max(values2)
max_value3 = max(values3)
max_value_wins = 0
for p in self.players:
p.value_wins = 0
if p.value1 == max_value1:
p.value_wins += 1
if p.value2 == max_value2:
p.value_wins += 1
if p.value3 == max_value3:
p.value_wins += 1
if p.value_wins > max_value_wins:
max_value_wins = p.value_wins
self.last_winner = ''
for p in self.players:
if p.value_wins == max_value_wins:
p.score += 1
self.last_winner += p.name
print("Победитель - %s!" % self.last_winner)
print("Результаты:")
for p in self.players:
print('%s: %s очков' % (p.name, p.score))
print('Игра в карточки')
g = Game()
# сколько игроков?
get_num_players = input("сколько игроков? (2 - 4): ")
# проверка ответа
num_players = int(get_num_players)
if num_players > 1 and num_players <= 4:
# имена игроков
for i in range(0, num_players):
new_name = input('Введи имя игрока %s: ' % (i+1))
g.players.append(Player(new_name))
while True:
print('Играем дальше...')
g.nextTurn()
h = HtmlPage()
h.update(g)
input()
print('до новых встреч и всё такое')
Шаблончик cards.css:
html{
font-family: Verdana,Arial,sans-serif;
}
body{
background-color: #eeeeee; /* Цвет фона веб-страницы */
}
.player{
display:inline-block;
width: 200px;
}
.name{
font-size:30px;
}
.score{
font-size:30px;
}
.card{
height:250px;
width:200px;
box-shadow: 0 0 5px 2px;
}
.value{
display: inline;
font-size:30px;
font-weight:bold;
}
.value1{
color:blue;
}
.value2{
color:green;
}
.value3{
color:red;
}
.congrats{
font-size:30px;
font-weight:bold;
color:red;
}
Архив с игрой: Скачать