using System;
using System.Collections.Generic;
using System.Drawing;
using System.Text;
using stoneNamespace;
using Satranç;
using System.Windows.Forms;
using System.Collections;
namespace stoneNamespace
{
class Knight : Stone
{
protected short drawTopX;
protected short drawTopY;
protected string knightColor;
public string KC
{
get { return knightColor; }
set {knightColor = value; }
}
public short KDTX
{
get { return drawTopX; }
set { drawTopX = value; }
}
public short KDTY
{
get { return drawTopY; }
set { drawTopY = value; }
}
//*********************
public Knight(short x, short y, string knightColor)
: base(x, y, knightColor)
{
}
public Knight()
{
}
// ~Knight()
//{
//}
public override void drawDefaultStone(Form fr)
{
Graphics draw = fr.CreateGraphics();
if (base.SC == "black")
draw.DrawImage(System.Drawing.Image.FromFile(@"..\..\blackknight.png"), base.DTX, base.DTY, 50, 50);
else if (base.SC == "white")
draw.DrawImage(System.Drawing.Image.FromFile(@"..\..\whiteknight.png"), base.DTX, base.DTY, 50, 50);
}
public override void moveOptions(string position, char color, ArrayList arl)//seçili piyonun oynayabileceği durumları geri dönderiyor.
{
//MessageBox.Show(position.ToString());
string positionX = position.Substring(1, 1);
string positionY = position.Substring(0, 1);
string str = "";
if (color == 'w')
{
this.moveOptionsViaDirection(str, positionY, positionX, "b", "upRight", arl);
this.moveOptionsViaDirection(str, positionY, positionX, "b", "upLeft", arl);
this.moveOptionsViaDirection(str, positionY, positionX, "b", "rightUp", arl);
this.moveOptionsViaDirection(str, positionY, positionX, "b", "leftUp", arl);
this.moveOptionsViaDirection(str, positionY, positionX, "b", "downRight", arl);
this.moveOptionsViaDirection(str, positionY, positionX, "b", "downLeft", arl);
this.moveOptionsViaDirection(str, positionY, positionX, "b", "rightDown", arl);
this.moveOptionsViaDirection(str, positionY, positionX, "b", "leftDown", arl);
}
else if (color == 'b')
{
this.moveOptionsViaDirection(str, positionY, positionX, "w", "upRight", arl);
this.moveOptionsViaDirection(str, positionY, positionX, "w", "upLeft", arl);
this.moveOptionsViaDirection(str, positionY, positionX, "w", "rightUp", arl);
this.moveOptionsViaDirection(str, positionY, positionX, "w", "leftUp", arl);
this.moveOptionsViaDirection(str, positionY, positionX, "w", "downRight", arl);
this.moveOptionsViaDirection(str, positionY, positionX, "w", "downLeft", arl);
this.moveOptionsViaDirection(str, positionY, positionX, "w", "rightDown", arl);
this.moveOptionsViaDirection(str, positionY, positionX, "w", "leftDown", arl);
}
//foreach (Object obj in arl)
//{
// MessageBox.Show(obj.ToString());
//}
}
public override void Move(string positionMatrixOrStoneCode, string ex_stoneCode, ArrayList arl, string filenameForBPiece, string filenameForWPiece)
{
Stone st = new Stone();
string filenameForBlackPiece = @"..\..\blackknight.png";
string filenameForWhitePiece = @"..\..\whiteknight.png";
st.Move(positionMatrixOrStoneCode, ex_stoneCode, arl, filenameForBlackPiece, filenameForWhitePiece);
}
public string nextPositionX = "";
public string nextPositionY = "";
private void moveOptionsViaDirection(string str, string positionY, string positionX, string color, string direction, ArrayList arl)
{
string nextPosition = "";
this.changePoisitionViaDirection(nextPositionX, nextPositionY, positionX, positionY, direction);
nextPosition = nextPositionY + nextPositionX;
if (Convert.ToInt16(nextPositionX) < 8 && Convert.ToInt16(nextPositionX) > -1 && Convert.ToInt16(nextPositionY) < 8 && Convert.ToInt16(nextPositionY) > -1)
{
if (str == "")
{
foreach (Object obj in stDes)
{
if (nextPosition == obj.ToString().Substring(0, 2))//önünde taş var
{
str = obj.ToString();
if (obj.ToString().Substring(2, 1) == color)//add to moveOp as eating option
{
arl.Add("eat" + obj.ToString());
}
}
if (str != "")
break;
}
if (str == "")//önünde taş yok
arl.Add(nextPosition);
}
}
nextPositionX = "";
nextPositionY = "";
}
private void changePoisitionViaDirection(string nextPosX, string nextPosY, string PosX, string PosY, string direction)
{
switch (direction)
{
case "upRight":
nextPositionX = Convert.ToString((Convert.ToInt16(PosX) + 1));
nextPositionY = Convert.ToString((Convert.ToInt16(PosY) - 2));
break;
case "upLeft":
nextPositionX = Convert.ToString((Convert.ToInt16(PosX) - 1));
nextPositionY = Convert.ToString((Convert.ToInt16(PosY) - 2));
break;
case "rightUp":
nextPositionX = Convert.ToString((Convert.ToInt16(PosX) + 2));
nextPositionY = Convert.ToString((Convert.ToInt16(PosY) - 1));
break;
case "leftUp":
nextPositionX = Convert.ToString((Convert.ToInt16(PosX) - 2));
nextPositionY = Convert.ToString((Convert.ToInt16(PosY) - 1));
break;
case "downRight":
nextPositionX = Convert.ToString((Convert.ToInt16(PosX) + 1));
nextPositionY = Convert.ToString((Convert.ToInt16(PosY) + 2));
break;
case "downLeft":
nextPositionX = Convert.ToString((Convert.ToInt16(PosX) - 1));
nextPositionY = Convert.ToString((Convert.ToInt16(PosY) + 2));
break;
case "rightDown":
nextPositionX = Convert.ToString((Convert.ToInt16(PosX) + 2));
nextPositionY = Convert.ToString((Convert.ToInt16(PosY) + 1));
break;
case "leftDown":
nextPositionX = Convert.ToString((Convert.ToInt16(PosX) - 2));
nextPositionY = Convert.ToString((Convert.ToInt16(PosY) + 1));
break;
default:
break;
}
}
}
}
|