More actions
imported>Unknown No edit summary |
(Repair batch-0003 pages from live compare) |
||
| Line 217: | Line 217: | ||
for i in range (0,19): | for i in range (0,19): | ||
for j in range (0,19): | for j in range (0,19): | ||
self.boardArray | self.boardArray[(i,j)] = 9 | ||
def GetDol (self,x,y): | def GetDol (self,x,y): | ||
return self.boardArray | return self.boardArray[(y,x)] | ||
def SetDol (self,x,y,dol): | def SetDol (self,x,y,dol): | ||
self.boardArray | self.boardArray[(y,x)] = dol | ||
def IsExistDolInPosition (self,x,y): | def IsExistDolInPosition (self,x,y): | ||
| Line 235: | Line 235: | ||
for i in range (0,19): | for i in range (0,19): | ||
for j in range (0,19): | for j in range (0,19): | ||
dol = "%s" % self.boardArray | dol = "%s" % self.boardArray[(i,j)] | ||
if dol == '9': | if dol == '9': | ||
dol = '+' | dol = '+' | ||
| Line 351: | Line 351: | ||
Position = raw_input ("Input Dol Position x,y :") | Position = raw_input ("Input Dol Position x,y :") | ||
Position = string.split (Position, ",") | Position = string.split (Position, ",") | ||
Position | Position[0] = (int)(Position[0]) | ||
Position | Position[1] = (int)(Position[1]) | ||
return Position | return Position | ||
| Line 379: | Line 379: | ||
---- | ---- | ||
[[TestFirstProgramming]] | [[TestFirstProgramming]] | ||
Latest revision as of 00:29, 27 March 2026
TestCaseBoard.py
import unittest
from Board import *
class BoardTestCase (unittest.TestCase):
def setUp (self):
self.dolboard = Board ()
self.dolboard.Empty ()
def tearDown (self):
self.dolboard = None
def testBoardEmpty (self):
self.dolboard.Empty ()
for i in range (0,19):
for j in range (0,19):
self.assertEquals (self.dolboard.GetDol(i,j) , DolEmpty)
def testIsExistDolInPosition (self):
self.dolboard.SetDol (1,1,DolWhite)
self.assertEquals (self.dolboard.IsExistDolInPosition(1,1),1)
self.assertEquals (self.dolboard.IsExistDolInPosition(3,6),0)
def testDol (self):
self.dolboard.SetDol (1,1,DolWhite)
self.assertEquals (self.dolboard.GetDol(1,1), DolWhite)
self.dolboard.SetDol (2,2,DolBlack)
self.assertEquals (self.dolboard.GetDol(2,2), DolBlack)
self.assertEquals (self.dolboard.GetDol(18,18), DolEmpty)
self.assertEquals (self.dolboard.GetDol(6,6), DolEmpty)
self.dolboard.SetDol (18,18,DolBlack)
self.assertEquals (self.dolboard.GetDol(18,18), DolBlack)
def testPrintEmptyBoard (self):
self.dolboard.Empty ()
self.assertEquals (self.dolboard.Print(), +++++++++++++++++++
+++++++++++++++++++
+++++++++++++++++++
+++++++++++++++++++
+++++++++++++++++++
+++++++++++++++++++
+++++++++++++++++++
+++++++++++++++++++
+++++++++++++++++++
+++++++++++++++++++
+++++++++++++++++++
+++++++++++++++++++
+++++++++++++++++++
+++++++++++++++++++
+++++++++++++++++++
+++++++++++++++++++
+++++++++++++++++++
+++++++++++++++++++
+++++++++++++++++++
)
suite = unittest.makeSuite (BoardTestCase, "test")
runner = unittest.TextTestRunner ()
runner.run (suite)
TestCaseOmok.py
import unittest
from Omok import *
class OmokTestCase (unittest.TestCase):
def setUp (self):
self.omok = Omok ()
self.omok.Start ()
def tearDown (self):
self.omok = None
def testIsExistDolInPosition (self):
self.omok.PutDol (2,2)
self.assertEquals (self.omok.IsExistDolInPosition (2,2),1)
self.omok.PutDol (0,0)
self.assertEquals (self.omok.IsExistDolInPosition (0,0),1)
self.assertEquals (self.omok.IsExistDolInPosition (16,16),0)
def testChangeCurrentDol (self):
currentDol = self.omok.GetCurrentDol ()
self.omok.ChangeCurrentDol ()
self.assertNotEqual (currentDol, self.omok.GetCurrentDol ())
def testFirstDolIsBlackInStart (self):
self.omok.Start ()
self.assertEquals (self.omok.GetCurrentDol (), DolBlack)
def testPutDol (self):
self.omok.PutDol (3,4)
self.assertEquals (self.omok.GetDol (3,4), DolBlack)
def testCurrentDol (self):
self.omok.PutDol (3,4)
self.assertEquals (self.omok.GetCurrentDol(), DolBlack)
self.omok.PutDol (9,6)
self.assertEquals (self.omok.GetCurrentDol(), DolBlack)
def testCheckFiveLeftTopToRightBottom (self):
self.omok.PutDol (0,0) # black
self.omok.PutDol (1,1) # black
self.omok.PutDol (2,2) # black
self.omok.PutDol (3,3) # black
self.omok.PutDol (4,4) # black
self.assertEquals (self.omok.CheckFiveLeftTopToRightBottom (4,4),1)
self.omok.Start ()
self.omok.PutDol (18,18) # black
self.omok.PutDol (17,17) # black
self.omok.PutDol (16,16) # black
self.omok.PutDol (15,15) # black
self.omok.PutDol (14,14) # black
self.assertEquals (self.omok.CheckFiveLeftTopToRightBottom (14,14),1)
self.omok.Start ()
self.omok.SetCurrentDol (DolWhite)
self.omok.PutDol (5,4) # white
self.omok.PutDol (6,5) # white
self.omok.PutDol (7,6) # white
self.omok.PutDol (8,7) # white
self.omok.PutDol (9,8) # white
self.assertEquals (self.omok.CheckFiveLeftTopToRightBottom (9,8),1)
def testCheckFiveLeftBottomToRightTop (self):
self.omok.PutDol (0,5) # black
self.omok.PutDol (1,4) # black
self.omok.PutDol (2,3) # black
self.omok.PutDol (3,2) # black
self.omok.PutDol (4,1) # black
self.assertEquals (self.omok.CheckFiveLeftBottomToRightTop (4,1),1)
self.omok.Start ()
self.omok.PutDol (18,14) # black
self.omok.PutDol (17,15) # black
self.omok.PutDol (16,16) # black
self.omok.PutDol (15,17) # black
self.omok.PutDol (14,18) # black
self.assertEquals (self.omok.CheckFiveLeftBottomToRightTop (14,18),1)
self.omok.Start ()
self.omok.SetCurrentDol (DolWhite)
self.omok.PutDol (5,8) # white
self.omok.PutDol (6,7) # white
self.omok.PutDol (7,6) # white
self.omok.PutDol (8,5) # white
self.omok.PutDol (9,4) # white
self.assertEquals (self.omok.CheckFiveLeftBottomToRightTop (9,4),1)
def testCheckFiveHorizon (self):
self.omok.PutDol (0,0)
self.omok.PutDol (1,0)
self.omok.PutDol (2,0)
self.omok.PutDol (3,0)
self.omok.PutDol (4,0)
self.assertEquals (self.omok.CheckFiveHorizon (4,0), 1)
self.omok.Start ()
self.omok.PutDol (18,0)
self.omok.PutDol (17,0)
self.omok.PutDol (16,0)
self.omok.PutDol (15,0)
self.omok.PutDol (14,0)
self.assertEquals (self.omok.CheckFiveHorizon (14,0), 1)
self.omok.Start ()
self.omok.PutDol (5,3)
self.omok.PutDol (6,3)
self.omok.PutDol (7,3)
self.omok.PutDol (8,3)
self.omok.PutDol (9,3)
self.assertEquals (self.omok.CheckFiveHorizon (9,3), 1)
def testCheckFiveVertical (self):
self.omok.PutDol (0,0)
self.omok.PutDol (0,1)
self.omok.PutDol (0,2)
self.omok.PutDol (0,3)
self.omok.PutDol (0,4)
self.assertEquals (self.omok.CheckFiveVertical (0,4), 1)
self.omok.Start ()
self.omok.PutDol (0,18)
self.omok.PutDol (0,17)
self.omok.PutDol (0,16)
self.omok.PutDol (0,15)
self.omok.PutDol (0,14)
self.assertEquals (self.omok.CheckFiveVertical (0,14), 1)
self.omok.Start ()
self.omok.PutDol (3,5)
self.omok.PutDol (3,6)
self.omok.PutDol (3,7)
self.omok.PutDol (3,8)
self.omok.PutDol (3,9)
self.assertEquals (self.omok.CheckFiveVertical (3,9), 1)
suite = unittest.makeSuite (OmokTestCase, "test")
runner = unittest.TextTestRunner ()
runner.run (suite)
Board.py
import sys
DolEmpty = 9
DolBlack = 0
DolWhite = 1
class Board:
def __init__(self):
self.boardArray = {}
def Empty(self):
for i in range (0,19):
for j in range (0,19):
self.boardArray[(i,j)] = 9
def GetDol (self,x,y):
return self.boardArray[(y,x)]
def SetDol (self,x,y,dol):
self.boardArray[(y,x)] = dol
def IsExistDolInPosition (self,x,y):
if self.GetDol (x,y) != DolEmpty:
return 1
else:
return 0
def Print (self):
PrintString =
for i in range (0,19):
for j in range (0,19):
dol = "%s" % self.boardArray[(i,j)]
if dol == '9':
dol = '+'
PrintString += dol
PrintString += "\n"
return PrintString
Omok.py
from Board import *
import string
class Omok:
def __init__(self):
self.currentDol = DolEmpty
self.board = Board ()
self.currentWinner = DolEmpty
pass
def Start (self):
self.currentDol = DolBlack
self.board.Empty ()
pass
def GetCurrentDol (self):
return self.currentDol
def SetCurrentDol (self, dol):
self.currentDol = dol
def ChangeCurrentDol (self):
if self.currentDol == DolBlack:
self.SetCurrentDol (DolWhite)
elif self.currentDol == DolWhite:
self.SetCurrentDol (DolBlack)
def CheckFiveHorizon (self,x,y):
for i in range (max(0,x-4),min (19,x+5)):
CountSameDol = 0
for j in range (i,min(19,i+5)):
if self.board.GetDol (j,y) == self.currentDol:
CountSameDol += 1
if CountSameDol == 5:
return 1
return 0
def CheckFiveLeftTopToRightBottom (self,x,y):
# Left-top -> Right-Bottom
# \
# \
# >
for i in range (-4,5):
CountSameDol = 0
for j in range (i,i+5):
if x + j < 0 or x + j > 18:
continue
elif y + j < 0 or y + j > 18:
continue
else:
if self.board.GetDol (x+j,y+j) == self.currentDol:
CountSameDol += 1
if CountSameDol == 5:
return 1
return 0
def CheckFiveLeftBottomToRightTop (self,x,y):
# Left-Bottom -> Right-Top
# >
# /
# /
for i in range (-4,5):
CountSameDol = 0
for j in range (i,i+5):
if x + j < 0 or x + j > 18:
continue
elif y - j < 0 or y - j > 18:
continue
else:
if self.board.GetDol (x+j,y-j) == self.currentDol:
CountSameDol += 1
if CountSameDol == 5:
return 1
return 0
def CheckFiveVertical (self,x,y):
for i in range (max(0,y-4),min (19,y+5)):
CountSameDol = 0
for j in range (i,min(19,i+5)):
if self.board.GetDol (x,j) == self.currentDol:
CountSameDol += 1
if CountSameDol == 5:
return 1
return 0
def PutDol (self,x,y):
self.board.SetDol (x,y,self.currentDol)
def GetDol (self,x,y):
return self.board.GetDol (x,y)
def CheckForFive (self,x,y):
if self.CheckFiveHorizon (x,y) == 1:
self.currentWinner = self.currentDol
if self.CheckFiveVertical (x,y) == 1:
self.currentWinner = self.currentDol
if self.CheckFiveLeftTopToRightBottom (x,y) == 1:
self.currentWinner = self.currentDol
def CurrentWinner (self):
return self.currentWinner
def QuestionDolPosition (self):
Position = raw_input ("Input Dol Position x,y :")
Position = string.split (Position, ",")
Position[0] = (int)(Position[0])
Position[1] = (int)(Position[1])
return Position
def IsExistDolInPosition (self,x,y):
return self.board.IsExistDolInPosition (x,y)
def main (self):
self.Start ()
while self.CurrentWinner() == DolEmpty:
print self.board.Print ()
Position = self.QuestionDolPosition ()
x,y = Position
if not self.IsExistDolInPosition (x,y):
self.PutDol (x,y)
self.CheckForFive (x,y)
self.ChangeCurrentDol ()
print "Current Winner : %s" % self.CurrentWinner ()
if __name__ == '__main__':
omok = Omok ()
omok.main ()