我正在用pyglet库用pyglet做一个跳棋游戏。到目前为止,我已经能够上传游戏的图形。问题是我不知道如何制作跳棋的逻辑/伪代码。我知道你们任何人都不可能在这里向我提供全部的逻辑。下面是我的一些想法。请告诉我这些想法是否正确,如果其中任何一个是错误的,什么是替代品?在
1)使用整数圈=0或1,0表示黑色棋子回合,1表示白色棋子回合。在
2)将方格从0到31编号。在
3)移动?帮我一把。告诉我基本轮廓。我知道一个棋子要移动,前面一定不能有其他棋子,或者如果对手的棋子在那里,它就可以抓住它。这是我最难理解的部分。然后,如果有两个对手的棋子,它就不能抓住第一个棋子,因为道路被阻挡了。那么,如果一个对手的棋子在棋子前面,而另一个棋子在它的第一个棋子之前一个空格,那么这个棋子可以跳两次并捕获两个棋子?在
4)我不知道国王的事。如果我能先做一些简单的事情,我相信我也能做到。在
5)获胜->;如果所有黑/白宝石,可见=假,则特定玩家获胜。在
下面是我的代码:
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()
我的问题可能很模糊或不具体,但需要帮助。在
目前没有回答
相关问题 更多 >
编程相关推荐