新棋吧 关注:7,010贴子:280,718
  • 13回复贴,共1
想实现一个功能
1.棋子A移动后,升变为棋子B
2.选择任意棋子C给他套个标记d
3.选择任意棋子E给他升变为棋子F
123是同一个棋子的棋步
我尝试过用加棋步的功能,但好像加不了第三步,而且即使是加棋步好像也只能操作自己的棋子,不能选对面棋手的棋,请问


IP属地:浙江来自Android客户端1楼2024-04-12 06:21回复
    如果是要实现自己控制对方棋子,可能需要借助from和to实现。具体我还没实测过


    IP属地:河北2楼2024-04-14 09:57
    收起回复
      直接移动到空格处,或者空格处有友方棋子时交换位置,我写的代码如下
      (define castling (
      (verify (in-zone? play-zone))
      $1
      (verify not-enemy?)
      cascade
      from
      (opposite $1)
      add
      ))
      刚开始写好的时候没问题,后来就开始报错,找了好久才发现是这条报错,而且只是提示非法移动,并不影响我继续玩,请问该怎么处理不让他报错啊


      IP属地:浙江3楼2024-04-14 22:07
      收起回复
        移动后升变
        (define shift-Scout (
        $1
        (verify (in-zone? $3))
        (verify not-friend?)
        (prisoner-check)
        (if enemy?
        (first-empty)
        (convert-prisoner)
        )
        (create $2)
        (add-partial move-2nd)
        ))
        设置标记
        (define curse (
        (verify last-to?)
        $1
        (while (in-zone? play-zone)
        (if (and not-empty?(not-flag? bCurse)(not-piece? Princess))
        from
        (set-flag bCurse true)
        add-partial move-3rd)
        $1
        )
        ))
        选棋子升变
        (define switch (
        (verify (or last-to?
        (and (last-from? 1i)(not-friend? 1i)(piece? Rook 1i)此处省略一大串检测)
        ))
        $1
        (while (in-zone? play-zone)
        (if (and friend? (not-piece? Princess))
        from
        (if (piece? Rook) (change-type Ambush_Rook))此处省略一大串升变
        add)
        $1
        )
        ))


        IP属地:浙江4楼2024-04-14 23:44
        收起回复
          嘶,才发现我理解错了,说明书说这个棋子的行动是
          1.选择其他棋子E升变为F,自身升变为B
          2.棋子A左右移动
          3.选择任意棋子C套个flag d
          下班后重写吧=_=


          IP属地:浙江来自Android客户端5楼2024-04-15 07:27
          回复
            升变其他子,自身也升变
            (define scout (
            (if (or (and (not-friend? 3iv)(piece? Rook 3iv))此处省略一大串检测
            )
            (change-type $2)
            $1
            (while (in-zone? play-zone)
            (if (and enemy? (not-piece? Princess))
            from(if (piece? Rook) (change-type Ambush_Rook))此处省略一大串升变
            (add-partial frame))
            $1)
            )))
            追加的frame移动
            (define shift-Scout (
            (verify not-last-to?)
            $1
            (verify (in-zone? $2))
            (verify not-friend?)
            (if (not-piece? Princess)
            (prisoner-check))
            (if enemy?
            (first-empty)
            (convert-prisoner)
            )
            (add-partial move-2nd)
            ))
            设置标记
            (define curse (
            (verify last-to?)
            $1
            (while (in-zone? play-zone)
            (if (and not-empty?(not-flag? bCurse)(not-piece? Princess))
            from
            (set-flag bCurse true)
            add-partial move-3rd)
            $1
            )
            ))
            还是之前的问题,升变其他棋子之后,最后增加棋步的我判断不在原来的棋子上了,所以第二步左右移动执行不了


            IP属地:浙江6楼2024-04-15 22:05
            收起回复