我正在使用pyglet库在python中制作一个跳棋游戏。到目前为止,我已经能够上传游戏的图形。问题是我不知道如何制作跳棋的逻辑/伪代码。我知道你们中的任何一个人都不可能在这里为我提供完整的逻辑。以下是我想到的一些想法。如果这些想法是正确的,如果其中任何一个是错的,那么请告诉我,替代品是什么?
1)使用整数转= 0或1,0表示黑色转弯,1表示转动白色。
2)将检查板中的方块从0到31编号。
3)运动?帮助我这个。告诉我基本的大纲。我知道,对于要移动的棋子,前面一定不能有任何其他棋子,或者如果对手棋子在那里,它可以抓住它。这是我无法弄清楚的最艰难的部分。然后,如果有两个对手棋子,则无法抓住第一个棋子,因为方式被阻挡。然后,如果一个对手的棋子在玩家棋子的前面并且对手的其他棋子在它的第一个棋子之前是一个空格,那么玩家棋子可以跳两次并且捕获两个棋子?
4)我不知道国王的事情。如果我能先做简单的事情,我相信我也能做到这一点。5)赢 - >如果所有black / whitesprites,visible = false,则特定玩家获胜。
以下是我的代码:
import pyglet
from pyglet.window import key
from pyglet.window import mouse
from pyglet.window import gl
class checkers(pyglet.window.Window):
blue = pyglet.resource.image('resources/blueSquare.bmp')
red = pyglet.resource.image('resources/redSquare.bmp')
blackP = pyglet.resource.image('resources/blackP.bmp')
whiteP = pyglet.resource.image('resources/whiteP.bmp')
spriteB = []
spriteW = []
screenWidth=600
screenHeight=600
x=None
y=None
w=None
h=None
def __init__(self):
super(checkers, self).__init__(self.screenWidth,self.screenHeight,
resizable=False,
caption="Checkers",
config=pyglet.gl.Config(double_buffer=True),
vsync=False
)
platform = pyglet.window.get_platform()
display = platform.get_default_display()
screen = display.get_default_screen()
self.x = 60
self.y = 60
self.red.width = self.x
self.red.height = self.y
self.blue.width = self.x
self.blue.height = self.y
self.blackP.height=self.y
self.blackP.width = self.x
self.whiteP.height = self.y
self.whiteP.width=self.x
self.h = self.red.height
self.w = self.red.width
self.x = (self.screenWidth - (self.w * 8)) / 2
self.y = (self.screenHeight - (self.h * 8)) / 2
for s in range(8):
for i in range(4):
if s % 2 == 0:
self.spriteB.append(
pyglet.sprite.Sprite(self.blackP, i * 2 * self.w + self.x + self.w, s * self.h + self.y))
self.spriteW.append(
pyglet.sprite.Sprite(self.whiteP, i * 2 * self.w + self.x + self.w, s * self.h + self.y))
else:
self.spriteB.append(
pyglet.sprite.Sprite(self.blackP, i * 2 * self.w + self.x, s * self.h + self.y))
self.spriteW.append(
pyglet.sprite.Sprite(self.whiteP, i * 2 * self.w + self.x, s * self.h + self.y))
for j in range(12,32):
self.spriteW[j].visible = False
for j in range(0,20):
self.spriteB[j].visible = False
def on_draw(self):
self.clear()
for s in range(8):
for i in range(4):
if s % 2 == 0:
self.blue.blit(i * 2 * self.w + self.x, s * self.h + self.y)
self.red.blit(i * 2 * self.w + self.x + self.w, s * self.h + self.y)
else:
self.blue.blit(i * 2 * self.w + self.x + self.w, s * self.h + self.y)
self.red.blit(i * 2 * self.w + self.x, s * self.h + self.y)
for i in range(32):
self.spriteW[i].draw()
self.spriteB[i].draw()
mygame=checkers()
pyglet.app.run()
我的问题可能非常模糊或不具体,但需要帮助。