跳棋游戏逻辑/伪代码?

2024-09-27 00:12:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用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()

我的问题可能很模糊或不具体,但需要帮助。在


Tags: inselfforrangeblueredwindowwidth

热门问题