[Shoginextmove-commit] [shoginextmove][79]

アーカイブの一覧に戻る

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>




Shoginextmove-commit メーリングリストの案内
アーカイブの一覧に戻る