Вопрос Бесплатный код на python

Регистрация
7 Сен 2013
Сообщения
75
Репутация
8
Спасибо
1
Монет
0




import pygame



pygame.init()

screen = pygame.display.set_mode((300, 300))

pygame.display.set_caption("Крестики-нолики")

board = [

[None, None, None],

[None, None, None],

[None, None, None]

]



def draw_board(surface):

# Очистить экран

surface.fill((255, 255, 255))



# Нарисовать сетку игрового поля

pygame.draw.line(surface, (0, 0, 0), (100, 0), (100, 300), 2)

pygame.draw.line(surface, (0, 0, 0), (200, 0), (200, 300), 2)

pygame.draw.line(surface, (0, 0, 0), (0, 100), (300, 100), 2)

pygame.draw.line(surface, (0, 0, 0), (0, 200), (300, 200), 2)



# Нарисовать крестики и нолики

for row in range(3):

for col in range(3):

if board[row][col] == "X":

x = col * 100 + 50

y = row * 100 + 50

pygame.draw.line(surface, (255, 0, 0), (x - 40, y - 40), (x + 40, y + 40), 4)

pygame.draw.line(surface, (255, 0, 0), (x + 40, y - 40), (x - 40, y + 40), 4)

elif board[row][col] == "O":

x = col * 100 + 50

y = row * 100 + 50

pygame.draw.circle(surface, (0, 0, 255), (x, y), 40, 4)



draw_board(screen)

pygame.display.flip()



def game_is_over():

# Проверить горизонтали

for row in range(3):

if (board[row][0] == board[row][1] == board[row][2]) and (board[row][0] is not None):

return True



# Проверить вертикали

for col in range(3):

if (board[0][col] == board[1][col] == board[2][col]) and (board[0][col] is not None):

return True



# Проверить диагонали

if (board[0][0] == board[1][1] == board[2][2]) and (board[0][0] is not None):

return True



if (board[0][2] == board[1][1] == board[2][0]) and (board[0][2] is not None):

return True



# Проверить ничью

if all([all(row) for row in board]):

return True



return False



game_over = False

turn = "X"



while not game_over:

for event in pygame.event.get():

if event.type == pygame.QUIT:

game_over = True

elif event.type == pygame.MOUSEBUTTONDOWN:

x, y = pygame.mouse.get_pos()

row = y // 100

col = x // 100

if board[row][col] is None:

board[row][col] = turn

if turn == "X":

turn = "O"

else:

turn = "X"



draw_board(screen)

pygame.display.flip()



if game_is_over():

game_over = True

print("Игра окончена.")

else:

if all([cell != None for row in board for cell in row]):

game_over = True

print("Ничья.")



Данный код реализует игру "Крестики-нолики" на Python с использованием библиотеки Pygame.
 
Я проверила на своём фаблете: да, программа реализует детские "крестики-нолики" с доской 3×3 при игре вдвоём, но, правда, не "крестики-нолики" как таковые (например, "нитку жемчуга" или "пять в ряд" что намного интереснее !). Интерфейс только так себе! Доску можно сделать и покрасивее, и не в верхнем левом углу экрана, а вывести по центру. А оценка конца партии и тачскриновский ввод очередного хода до окончания игры работают прекрасно как и должно быть. В пигейме вообще такого рода 2D-игры реализуются наипрекраснейшим образом! Можно даже и музыку пустить или просто разнообразные звуковые эффекты задействовать, и саму игру довести до классической гомокунарабэ (с живым партнёром или с компьютером) - всё будет отлично! Вот и программируй в своё удовольствие! Какие проблемы? Так нет же: "что бы мне такого написать?" или "за какой бы такой пет-проект мне взяться?", - постоянно вопрошают некоторые и никак не могут ответить. Да вот за "крестики-нолики" и прочие классические настольные стратегические игры и берись! ))
 
Так это не вопрос - что нужно?
 
Назад
Сверху