svnno****@sourc*****
svnno****@sourc*****
2016年 2月 23日 (火) 16:05:10 JST
Revision: 79 http://sourceforge.jp/projects/shoginextmove/scm/svn/commits/79 Author: bellyoshi Date: 2016-02-23 16:05:10 +0900 (Tue, 23 Feb 2016) Log Message: ----------- Modified Paths: -------------- Quantum/QuantumShogi/QuantumShogi.Logic/Board.cs Quantum/QuantumShogi/QuantumShogi.Logic/Move.cs Quantum/QuantumShogi/QuantumShogi.Logic/Piece.cs Quantum/QuantumShogi/QuantumShogi.Logic/QuantumShogi.Logic.csproj Quantum/QuantumShogi/QuantumShogi.Logic.Test/QuantumShogi.Logic.Test.csproj Added Paths: ----------- Quantum/QuantumShogi/QuantumShogi.Logic/BoardInitializer.cs Quantum/QuantumShogi/QuantumShogi.Logic.Test/BoardInitializerTests.cs Modified: Quantum/QuantumShogi/QuantumShogi.Logic/Board.cs =================================================================== --- Quantum/QuantumShogi/QuantumShogi.Logic/Board.cs 2016-02-23 01:36:46 UTC (rev 78) +++ Quantum/QuantumShogi/QuantumShogi.Logic/Board.cs 2016-02-23 07:05:10 UTC (rev 79) @@ -7,37 +7,51 @@ { class Board { - const int SIZE_OF_X = 9 + 2; - const int SIZE_OF_Y = 9 + 2; + /// <summary> + /// 盤の横サイズ + /// </summary> + const int SIZE_OF_X = 9; + /// <summary> + /// 盤の縦サイズ + /// </summary> + const int SIZE_OF_Y = 9; + /// <summary> + /// 壁を含めた盤の横サイズ + /// </summary> + const int MEM_SIZE_OF_X = SIZE_OF_X + 2; + /// <summary> + /// 盤を含めた盤の縦サイズ + /// </summary> + const int MEM_SIZE_OF_Y = SIZE_OF_Y + 2; + + int GetIndexOfCell(int x, int y) + { + return MEM_SIZE_OF_X * y + x; + } private Piece[] _cells; public Piece GetCells(int x,int y) { - return _cells[SIZE_OF_X * y + x]; + return _cells[GetIndexOfCell(x, y)]; } private void SetCell(int x,int y,Piece koma) { - + _cells[GetIndexOfCell(x, y)] = koma; } - public Board() + public Board(BoardInitializer boardInitializer) { - _cells = new Piece[SIZE_OF_X * SIZE_OF_Y]; + _cells = new Piece[MEM_SIZE_OF_X * MEM_SIZE_OF_Y]; + for(int i = 0; i < _cells.Count(); i++) + { + _cells[i] = Piece.GetWall(); + } + for(int x = 1; x <= SIZE_OF_X; x++) + { + for(int y = 1; y <= SIZE_OF_Y; y++) + { + SetCell(x, y, boardInitializer.GetCells(x, y)); + } + } - //9 壁 - //1 量子 - //0 空 - int[][] initialArrangement = { - new int[] {9,9,9,9,9,9,9,9,9,9,9}, - new int[] {9,1,1,1,1,1,1,1,1,1,9}, - new int[] {9,0,1,0,0,0,0,0,1,0,9}, - new int[] {9,1,1,1,1,1,1,1,1,1,9}, - new int[] {9,0,0,0,0,0,0,0,0,0,9}, - new int[] {9,0,0,0,0,0,0,0,0,0,9}, - new int[] {9,0,0,0,0,0,0,0,0,0,9}, - new int[] {9,1,1,1,1,1,1,1,1,1,9}, - new int[] {9,0,1,0,0,0,0,0,1,0,9}, - new int[] {9,1,1,1,1,1,1,1,1,1,9}, - new int[] {9,9,9,9,9,9,9,9,9,9,9} - }; } } Added: Quantum/QuantumShogi/QuantumShogi.Logic/BoardInitializer.cs =================================================================== --- Quantum/QuantumShogi/QuantumShogi.Logic/BoardInitializer.cs (rev 0) +++ Quantum/QuantumShogi/QuantumShogi.Logic/BoardInitializer.cs 2016-02-23 07:05:10 UTC (rev 79) @@ -0,0 +1,59 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace QuantumShogi.Logic +{ + + public class BoardInitializer + { + const int L = 9;//壁 + const int B = 1;//先手の量子駒 + const int W = 2;//後手の量子駒 + const int E = 0;//空 + int[][] initialArrangement = { + new int[] {L,L,L,L,L,L,L,L,L,L,L}, + new int[] {L,W,W,W,W,W,W,W,W,W,L}, + new int[] {L,E,W,E,E,E,E,E,W,E,L}, + new int[] {L,W,W,W,W,W,W,W,W,W,L}, + new int[] {L,E,E,E,E,E,E,E,E,E,L}, + new int[] {L,E,E,E,E,E,E,E,E,E,L}, + new int[] {L,E,E,E,E,E,E,E,E,E,L}, + new int[] {L,B,B,B,B,B,B,B,B,B,L}, + new int[] {L,E,B,E,E,E,E,E,B,E,L}, + new int[] {L,B,B,B,B,B,B,B,B,B,L}, + new int[] {L,L,L,L,L,L,L,L,L,L,L} + }; + public Piece GetCells(int x,int y) + { + int s = initialArrangement[y][10 - x]; + switch (s) + { + case L: + { + return Piece.GetWall(); + } + case B: + { + return Piece.GetInitBlack(); + } + case W: + { + return Piece.GetInitWhite(); + } + case E: + { + return Piece.GetEmpty(); + } + default: + { + System.Diagnostics.Debug.Assert(false); + break; + } + } + return Piece.GetEmpty(); + + } + } +} Modified: Quantum/QuantumShogi/QuantumShogi.Logic/Move.cs =================================================================== --- Quantum/QuantumShogi/QuantumShogi.Logic/Move.cs 2016-02-23 01:36:46 UTC (rev 78) +++ Quantum/QuantumShogi/QuantumShogi.Logic/Move.cs 2016-02-23 07:05:10 UTC (rev 79) @@ -7,9 +7,34 @@ { class Move { + /// <summary> + /// 駒の移動元 + /// </summary> public int from { get; set; } + /// <summary> + /// 駒の移動先 + /// </summary> public int to { get; set; } + /// <summary> + /// 移動または打った駒 + /// </summary> public Piece piece { get; set; } - public int + /// <summary> + /// 取られた駒 + /// </summary> + public Piece capture { get; set; } + /// <summary> + /// 駒がなったか + /// </summary> + public bool promote; + public Move(int from,int to,Piece piece,Piece capture = null,bool promote = false) + { + this.from = from; + this.to = to; + this.piece = piece; + this.capture = capture; + this.promote = promote; + + } } } Modified: Quantum/QuantumShogi/QuantumShogi.Logic/Piece.cs =================================================================== --- Quantum/QuantumShogi/QuantumShogi.Logic/Piece.cs 2016-02-23 01:36:46 UTC (rev 78) +++ Quantum/QuantumShogi/QuantumShogi.Logic/Piece.cs 2016-02-23 07:05:10 UTC (rev 79) @@ -5,7 +5,7 @@ namespace QuantumShogi.Logic { - class Piece + public class Piece { private bool[] _isTypeOf = new bool[CountOfType()]; /// <summary> @@ -67,7 +67,7 @@ /// 先手の初期量子駒 /// </summary> /// <returns></returns> - public Piece GetInitBlack() + public static Piece GetInitBlack() { return new Piece(true,false,true); } @@ -75,7 +75,7 @@ /// 後手の初期量子駒 /// </summary> /// <returns></returns> - public Piece GetInitWhite() + public static Piece GetInitWhite() { return new Piece(false, true, true); } @@ -86,7 +86,7 @@ } static private Piece empty = CreateEmpty(); - public Piece GetEmpty() + public static Piece GetEmpty() { return empty; } @@ -97,7 +97,7 @@ } static private Piece wall = CreateWall(); - public Piece GetWall() + public static Piece GetWall() { return wall; } Modified: Quantum/QuantumShogi/QuantumShogi.Logic/QuantumShogi.Logic.csproj =================================================================== --- Quantum/QuantumShogi/QuantumShogi.Logic/QuantumShogi.Logic.csproj 2016-02-23 01:36:46 UTC (rev 78) +++ Quantum/QuantumShogi/QuantumShogi.Logic/QuantumShogi.Logic.csproj 2016-02-23 07:05:10 UTC (rev 79) @@ -39,6 +39,7 @@ </ItemGroup> <ItemGroup> <Compile Include="Board.cs" /> + <Compile Include="BoardInitializer.cs" /> <Compile Include="Class1.cs" /> <Compile Include="DirectionsGenerator.cs" /> <Compile Include="Move.cs" /> Added: Quantum/QuantumShogi/QuantumShogi.Logic.Test/BoardInitializerTests.cs =================================================================== --- Quantum/QuantumShogi/QuantumShogi.Logic.Test/BoardInitializerTests.cs (rev 0) +++ Quantum/QuantumShogi/QuantumShogi.Logic.Test/BoardInitializerTests.cs 2016-02-23 07:05:10 UTC (rev 79) @@ -0,0 +1,27 @@ +using Microsoft.VisualStudio.TestTools.UnitTesting; +using QuantumShogi.Logic; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace QuantumShogi.Logic.Tests +{ + [TestClass()] + public class BoardInitializerTests + { + [TestMethod()] + public void GetCellsTest() + { + var initialize = new BoardInitializer(); + var p11 = initialize.GetCells(1, 1); + Assert.IsTrue(p11.IsWhite); + var p37 = initialize.GetCells(3, 7); + Assert.IsTrue(p37.IsBlack); + var p00 = initialize.GetCells(0, 0); + Assert.IsTrue(p00.IsWall); + var p12 = initialize.GetCells(1, 2); + Assert.IsTrue(p12.IsEmtpy); + } + } +} \ No newline at end of file Modified: Quantum/QuantumShogi/QuantumShogi.Logic.Test/QuantumShogi.Logic.Test.csproj =================================================================== --- Quantum/QuantumShogi/QuantumShogi.Logic.Test/QuantumShogi.Logic.Test.csproj 2016-02-23 01:36:46 UTC (rev 78) +++ Quantum/QuantumShogi/QuantumShogi.Logic.Test/QuantumShogi.Logic.Test.csproj 2016-02-23 07:05:10 UTC (rev 79) @@ -53,9 +53,16 @@ </Otherwise> </Choose> <ItemGroup> + <Compile Include="BoardInitializerTests.cs" /> <Compile Include="UnitTest1.cs" /> <Compile Include="Properties\AssemblyInfo.cs" /> </ItemGroup> + <ItemGroup> + <ProjectReference Include="..\QuantumShogi.Logic\QuantumShogi.Logic.csproj"> + <Project>{770CFCF8-1A61-4C45-91A5-C27AA60CC7F6}</Project> + <Name>QuantumShogi.Logic</Name> + </ProjectReference> + </ItemGroup> <Choose> <When Condition="'$(VisualStudioVersion)' == '10.0' And '$(IsCodedUITest)' == 'True'"> <ItemGroup>