# -*- coding = utf-8 -*-
# @Time:2022/5/14 0014 12:26
# @Author:jackelh
# @File:五子棋.py
# @Software:PyCharm
import pygame
pygame.init()
window = pygame.display.set_mode((800, 800))
window.fill('white')
font = pygame.font.SysFont('SimHei', 20)
font1 = pygame.font.SysFont('SimHei', 40)
txt = 'author: ljackeh'
txt1 = 'date: 2022-05-15'
txt2 = 'Game: five-in-a-row(五子棋)'
textauthor = font1.render(txt, True, (0, 0, 0))
window.blit(textauthor, (0, 500))
textauthor = font1.render(txt1, True, (0, 0, 0))
window.blit(textauthor, (0, 600))
textauthor = font1.render(txt2, True, (0, 0, 0))
window.blit(textauthor, (0, 700))
# 画棋盘
pygame.draw.rect(window, (238, 154, 73), (20, 20, 420, 420), 420)
pygame.display.update()
for i in range(15):
if i == 0 or i == 14:
text = font.render(str(i + 1), True, 'black')
window.blit(text, (450, 10 + 30 * i))
text1 = font.render(chr(i + 65), True, 'black')
window.blit(text1, (20 + 30 * i, 450))
pygame.draw.line(window, 'black', (20, 20 + 30 * i), (440, 20 + 30 * i), 4)
pygame.draw.line(window, 'black', (20 + 30 * i, 20), (20 + 30 * i, 440), 4)
pygame.display.update()
else:
pygame.draw.line(window, 'black', (20, 20 + 30 * i), (440, 20 + 30 * i))
text = font.render(str(i + 1), True, 'black')
window.blit(text, (450, 10 + 30 * i))
pygame.draw.line(window, 'black', (20 + 30 * i, 20), (20 + 30 * i, 440))
text1 = font.render(chr(i + 65), True, 'black')
window.blit(text1, (20 + 30 * i, 450))
pygame.display.flip()
positon = [] # 储存落点的位置
for i in range(15):
for k in range(15):
positon.append((20 + 30 * i, 20 + 30 * k))
pygame.draw.circle(window, 'black', (110, 110), 5)
pygame.draw.circle(window, 'black', (350, 110), 5)
pygame.draw.circle(window, 'black', (350, 350), 5)
pygame.draw.circle(window, 'black', (110, 350), 5)
pygame.draw.circle(window, 'black', (230, 230), 5)
window.blit(font.render('黑方: 请下棋', True, 'red'), (500, 500))
pygame.display.update()
print(type(positon[0]))
play1 = []
play2 = []
count = 0
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
exit()
if event.type == pygame.MOUSEBUTTONDOWN:
x, y = event.pos
for i in positon:
if (i[0] - 10) < x < (i[0] + 10) and (i[1] - 10) < y < (i[1] + 10):
if count % 2 == 0:
# font.render('黑方:')
for ct in range(10):
window.blit(font.render('黑方: 请下棋', True, 'white'), (500, 500))
window.blit(font.render('白方: 请下棋', True, 'red'), (500, 500))
pygame.display.update()
pygame.draw.circle(window, 'black', i, 10)
play1.append(i)
positon.remove(i)
pygame.display.update()
f = [[-1, 0], [-1, 1], [0, 1], [1, 1]]
for z in range(4):
a, b = f[z][0], f[z][1] # a = -1,b=0
count1 = 0 # 正向
count2 = 0 # 反向
for k in range(len(play1)):
for c in range(1, 5):
if (i[0] + a * 30 * c, i[1] + b * 30 * c) == play1[k]:
count1 += 1
if (i[0] - a * 30 * c, i[1] - b * 30 * c) == play1[k]:
count2 += 1
if count1 + count2 == 4:
window.blit(font1.render('black win!', True, 'red'), (500, 300))
pygame.display.update()
count = 0.5
if count % 2 == 1:
for ct in range(10):
window.blit(font.render('白方: 请下棋', True, 'white'), (500, 500))
window.blit(font.render('黑方: 请下棋', True, 'red'), (500, 500))
pygame.display.update()
pygame.draw.circle(window, 'white', i, 10)
play2.append(i)
positon.remove(i)
pygame.display.update()
f = [[-1, 0], [-1, 1], [0, 1], [1, 1]]
for z in range(4):
a, b = f[z][0], f[z][1] # a = -1,b=0
count1 = 0 # 正向
count2 = 0 # 反向
for k in range(len(play2)):
for c in range(1, 5):
if (i[0] + a * 30 * c, i[1] + b * 30 * c) == play2[k]:
count1 += 1
if (i[0] - a * 30 * c, i[1] - b * 30 * c) == play2[k]:
count2 += 1
if count1 + count2 == 4:
window.blit(font1.render('white win!', True, 'red'), (500, 300))
pygame.display.update()
count = 0.5
count += 1
这就是全部代码,可能还有一些写得不好的地方,请大家提出意见