Created
May 20, 2012 19:01
-
-
Save MhdAljuboori/2759152 to your computer and use it in GitHub Desktop.
AI homework
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
initializeColumn(Column) :- | |
Column >0, | |
% create empty table | |
assert(top(Column, 1)), | |
Column1 is Column-1, | |
initializeColumn(Column1). | |
initializeColumn(0). | |
% Create Game with Row equal to row and column equal to column | |
createGame(Row, Column) :- | |
% size of table | |
assert(size(Row, Column)), | |
% initialize All column | |
initializeColumn(Column). | |
push(Column) :- | |
size(Row, ColumnNum), | |
% if column not full | |
(Column < ColumnNum+1, Column > 0), | |
( | |
% get Row number in column | |
top(Column, RowNum), | |
% there are space in column | |
RowNum < Row+1, | |
% add red at RowNum an column | |
assert(cell(red, RowNum, Column)), | |
% plus RowNum by one | |
retract(top(Column, RowNum)), | |
R1 is RowNum+1, | |
assert(top(Column, R1)) | |
), | |
win(red, RowNum, Column). | |
winVertical(Player, Row, Column) :- | |
cell(Player, Row, Column), R1 is Row-1, | |
cell(Player, R1, Column), R2 is R1-1, | |
cell(Player, R2, Column), R3 is R2-1, | |
cell(Player, R3, Column). | |
winHorizontal(Player, Row, Column) :- | |
% X: pice already exist, Y: new pice added | |
% X X X Y | |
cell(Player, Row, Column), C1 is Column-1, | |
cell(Player, Row, C1), C2 is C1-1, | |
cell(Player, Row, C2), C3 is C2-1, | |
cell(Player, Row, C3), !; | |
% Y X X X | |
cell(Player, Row, Column), C1 is Column+1, | |
cell(Player, Row, C1), C2 is C1+1, | |
cell(Player, Row, C2), C3 is C2+1, | |
cell(Player, Row, C3), !; | |
% X Y X X | |
cell(Player, Row, Column), C1 is Column-1, | |
cell(Player, Row, C1), C2 is Column+1, | |
cell(Player, Row, C2), C3 is C2+1, | |
cell(Player, Row, C3), !; | |
% X X Y X | |
cell(Player, Row, Column), C1 is Column-1, | |
cell(Player, Row, C1), C2 is C1-1, | |
cell(Player, Row, C2), C3 is Column+1, | |
cell(Player, Row, C3), !. | |
winDiagonalLeftToRight(Player, Row, Column) :- | |
% X: pice already exist, Y: new pice added | |
% left side The lowest one | |
% Y X X X | |
cell(Player, Row, Column), R1 is Row+1, C1 is Column +1, | |
cell(Player, R1, C1), R2 is R1+1, C2 is C1 +1, | |
cell(Player, R2, C2), R3 is R2+1, C3 is C2 +1, | |
cell(Player, R3, C3), !; | |
% X X X Y | |
cell(Player, Row, Column), R1 is Row-1, C1 is Column -1, | |
cell(Player, R1, C1), R2 is R1-1, C2 is C1 -1, | |
cell(Player, R2, C2), R3 is R2-1, C3 is C2 -1, | |
cell(Player, R3, C3), !; | |
% X Y X X | |
cell(Player, Row, Column), R1 is Row-1, C1 is Column -1, | |
cell(Player, R1, C1), R2 is Row+1, C2 is Column +1, | |
cell(Player, R2, C2), R3 is R2+1, C3 is C2 +1, | |
cell(Player, R3, C3), !; | |
% X X Y X | |
cell(Player, Row, Column), R1 is Row+1, C1 is Column +1, | |
cell(Player, R1, C1), R2 is Row-1, C2 is Column -1, | |
cell(Player, R2, C2), R3 is R2-1, C3 is C2 -1, | |
cell(Player, R3, C3), !. | |
winDiagonalRightToLeft(Player, Row, Column) :- | |
% X: pice already exist, Y: new pice added | |
% left side The lowest one | |
% Y X X X | |
cell(Player, Row, Column), R1 is Row+1, C1 is Column -1, | |
cell(Player, R1, C1), R2 is R1+1, C2 is C1 -1, | |
cell(Player, R2, C2), R3 is R2+1, C3 is C2 -1, | |
cell(Player, R3, C3), !; | |
% X X X Y | |
cell(Player, Row, Column), R1 is Row-1, C1 is Column +1, | |
cell(Player, R1, C1), R2 is R1-1, C2 is C1 +1, | |
cell(Player, R2, C2), R3 is R2-1, C3 is C2 +1, | |
cell(Player, R3, C3), !; | |
% X Y X X | |
cell(Player, Row, Column), R1 is Row-1, C1 is Column +1, | |
cell(Player, R1, C1), R2 is Row+1, C2 is Column -1, | |
cell(Player, R2, C2), R3 is R2+1, C3 is C2 -1, | |
cell(Player, R3, C3), !; | |
% X X Y X | |
cell(Player, Row, Column), R1 is Row+1, C1 is Column -1, | |
cell(Player, R1, C1), R2 is Row-1, C2 is Column +1, | |
cell(Player, R2, C2), R3 is R2-1, C3 is C2 +1, | |
cell(Player, R3, C3), !. | |
winDiagonal(Player, Row, Column) :- | |
winDiagonalLeftToRight(Player, Row, Column), !; | |
winDiagonalRightToLeft(Player, Row, Column), !. | |
win(Player, Row, Column) :- | |
winVertical(Player, Row, Column), !; | |
winHorizontal(Player, Row, Column), !; | |
winDiagonal(Player, Row, Column), !. | |
show :- | |
size(Row, Column), | |
showTable(Column). | |
print(Column) :- | |
cell(Player, Row, Column), | |
write(Row), write(' , '), write(Column), write(' = '), write(Player). | |
showTable(Column) :- | |
print(Column); | |
Column > 0, | |
C1 is Column-1, | |
showTable(C1). | |
showTable(0). |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment