summaryrefslogtreecommitdiff
authorzecke <zecke>2004-04-30 13:27:34 (UTC)
committer zecke <zecke>2004-04-30 13:27:34 (UTC)
commitb313bfcc63e972b1dfe059d91fe364d535478c7c (patch) (unidiff)
tree36c52526da889598133698cb7c914fbe134c9594
parent7829ac6b0577bf2398110f327a4b5e40435c105b (diff)
downloadopie-b313bfcc63e972b1dfe059d91fe364d535478c7c.zip
opie-b313bfcc63e972b1dfe059d91fe364d535478c7c.tar.gz
opie-b313bfcc63e972b1dfe059d91fe364d535478c7c.tar.bz2
some long outstanding 'freeze' bug..
having a function pause(){} conflicts with linux version of pause. So instead of doing nothing... we were forced to pause(2)
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/games/go/goplayutils.c2
-rw-r--r--noncore/games/go/killable.c4
2 files changed, 3 insertions, 3 deletions
diff --git a/noncore/games/go/goplayutils.c b/noncore/games/go/goplayutils.c
index 9e2ce4c..91c6db2 100644
--- a/noncore/games/go/goplayutils.c
+++ b/noncore/games/go/goplayutils.c
@@ -887,65 +887,65 @@ short gx, gy, *savex, *savey;
887 mark2 = playMark; 887 mark2 = playMark;
888 tryPlay(plist3.p[i].px, plist3.p[i].py, me); 888 tryPlay(plist3.p[i].px, plist3.p[i].py, me);
889 libList[i] = gList[gMap[groupIDs[gx][gy]]].libC; 889 libList[i] = gList[gMap[groupIDs[gx][gy]]].libC;
890 if (libList[i] > treeLibLim) /* i'm safe */ 890 if (libList[i] > treeLibLim) /* i'm safe */
891 { 891 {
892 *savex = plist3.p[i].px; 892 *savex = plist3.p[i].px;
893 *savey = plist3.p[i].py; 893 *savey = plist3.p[i].py;
894 result = TRUE; 894 result = TRUE;
895 goto one; 895 goto one;
896 } 896 }
897 undoTo(mark2); 897 undoTo(mark2);
898 } 898 }
899 for (i = 1; i <= plist3.indx - 1; i++) 899 for (i = 1; i <= plist3.indx - 1; i++)
900 for (j = i + 1; j <= plist3.indx; j++) 900 for (j = i + 1; j <= plist3.indx; j++)
901 if (libList[i] < libList[j]) 901 if (libList[i] < libList[j])
902 { 902 {
903 tl = libList[i]; 903 tl = libList[i];
904 libList[i] = libList[j]; 904 libList[i] = libList[j];
905 libList[j] = tl; 905 libList[j] = tl;
906 tp = plist3.p[i]; 906 tp = plist3.p[i];
907 plist3.p[i] = plist3.p[j]; 907 plist3.p[i] = plist3.p[j];
908 plist3.p[j] = tp; 908 plist3.p[j] = tp;
909 } 909 }
910 } 910 }
911 for (i = 1; i <= plist3.indx; i++) 911 for (i = 1; i <= plist3.indx; i++)
912 { 912 {
913 *savex = plist3.p[i].px; 913 *savex = plist3.p[i].px;
914 *savey = plist3.p[i].py; 914 *savey = plist3.p[i].py;
915 if (legal[*savex][*savey]) 915 if (legal[*savex][*savey])
916 { 916 {
917 smark = playMark; 917 smark = playMark;
918 tryPlay(*savex, *savey, me); 918 tryPlay(*savex, *savey, me);
919 pause(); 919//pause();
920 if (gList[gMap[groupIDs[*savex][*savey]]].libC > 1) 920 if (gList[gMap[groupIDs[*savex][*savey]]].libC > 1)
921 if (gList[gMap[groupIDs[gx][gy]]].libC > treeLibLim) 921 if (gList[gMap[groupIDs[gx][gy]]].libC > treeLibLim)
922 { 922 {
923 restoreState(); 923 restoreState();
924/* sClearChar(sChar, rXor); */ 924/* sClearChar(sChar, rXor); */
925 return TRUE; 925 return TRUE;
926 } 926 }
927 else if (gList[gMap[groupIDs[gx][gy]]].libC > 1) 927 else if (gList[gMap[groupIDs[gx][gy]]].libC > 1)
928 if (! killable(gx, gy, &gx1, &gx2)) 928 if (! killable(gx, gy, &gx1, &gx2))
929 { 929 {
930 restoreState(); 930 restoreState();
931/* sClearChar(sChar, rXor); */ 931/* sClearChar(sChar, rXor); */
932 return TRUE; 932 return TRUE;
933 } 933 }
934 undoTo(smark); 934 undoTo(smark);
935 } 935 }
936 } 936 }
937 result = FALSE; 937 result = FALSE;
938one: 938one:
939 restoreState(); 939 restoreState();
940/* sClearChar(sChar, rXor); */ 940/* sClearChar(sChar, rXor); */
941 return result; 941 return result;
942} /* saveable */ 942} /* saveable */
943 943
944/* 944/*
945 marks unsavable groups as dead 945 marks unsavable groups as dead
946*/ 946*/
947markDead() 947markDead()
948{ /* markDead */ 948{ /* markDead */
949 short i, j, gx, gy, result; 949 short i, j, gx, gy, result;
950#ifdef DEBUG 950#ifdef DEBUG
951 printf( "markDead\n" ); 951 printf( "markDead\n" );
diff --git a/noncore/games/go/killable.c b/noncore/games/go/killable.c
index 3ed2d2e..23a133d 100644
--- a/noncore/games/go/killable.c
+++ b/noncore/games/go/killable.c
@@ -33,65 +33,65 @@ short x, y;
33 if ((x < maxPoint) && (bord[x + 1][y] == 0)) 33 if ((x < maxPoint) && (bord[x + 1][y] == 0))
34 n = n + 1; 34 n = n + 1;
35 if ((y > 0) && (bord[x][y - 1] == 0)) 35 if ((y > 0) && (bord[x][y - 1] == 0))
36 n = n + 1; 36 n = n + 1;
37 if ((y < maxPoint) && (bord[x][y + 1] == 0)) 37 if ((y < maxPoint) && (bord[x][y + 1] == 0))
38 n = n + 1; 38 n = n + 1;
39 return n; 39 return n;
40 } /* mtNbrs */ 40 } /* mtNbrs */
41 41
42short killTree(tx, ty, gx, gy, escape, tkMark) 42short killTree(tx, ty, gx, gy, escape, tkMark)
43short tx, ty, gx, gy, *escape, tkMark; 43short tx, ty, gx, gy, *escape, tkMark;
44 { /* killTree */ 44 { /* killTree */
45 short curMark, mark2, mark3, i, j, k, tl, dStart, result; 45 short curMark, mark2, mark3, i, j, k, tl, dStart, result;
46 sPointList lList1, lList2; 46 sPointList lList1, lList2;
47 short libList[maxSPoint+1]; 47 short libList[maxSPoint+1];
48 point tp; 48 point tp;
49 short esc = FALSE; 49 short esc = FALSE;
50 tryCount = tryCount + 1; 50 tryCount = tryCount + 1;
51 if (tryCount > tryLimit) 51 if (tryCount > tryLimit)
52 { 52 {
53 undoTo(tkMark); 53 undoTo(tkMark);
54/* for (i = 1; i <= depth - 1; i++) 54/* for (i = 1; i <= depth - 1; i++)
55 { 55 {
56 sClearChar(sChar, rXor); 56 sClearChar(sChar, rXor);
57 } */ 57 } */
58 depth = 1; 58 depth = 1;
59 return FALSE; 59 return FALSE;
60 } 60 }
61/* write(sChar); */ 61/* write(sChar); */
62 depth = depth + 1; 62 depth = depth + 1;
63 curMark = playMark; 63 curMark = playMark;
64 tryPlay(tx, ty, me); /* try my move */ 64 tryPlay(tx, ty, me); /* try my move */
65 pause(); 65// pause();
66 if (gList[gMap[groupIDs[tx][ty]]].libC == 0) /* I'm dead */ 66 if (gList[gMap[groupIDs[tx][ty]]].libC == 0) /* I'm dead */
67 { 67 {
68 result = FALSE; 68 result = FALSE;
69 goto one; 69 goto one;
70 } 70 }
71 else if (killFlag) /* I killed something of his */ 71 else if (killFlag) /* I killed something of his */
72 { 72 {
73 result = TRUE; 73 result = TRUE;
74 goto one; 74 goto one;
75 } 75 }
76 else if (gList[gMap[groupIDs[gx][gy]]].libC > treeLibLim) /* safe */ 76 else if (gList[gMap[groupIDs[gx][gy]]].libC > treeLibLim) /* safe */
77 { 77 {
78 result = FALSE; 78 result = FALSE;
79 goto one; 79 goto one;
80 } 80 }
81 else 81 else
82 { 82 {
83 sSpanGroup(gx, gy, &lList1); /* find his liberties */ 83 sSpanGroup(gx, gy, &lList1); /* find his liberties */
84 if (gList[gMap[groupIDs[tx][ty]]].libC == 1) /* he can kill me */ 84 if (gList[gMap[groupIDs[tx][ty]]].libC == 1) /* he can kill me */
85 { 85 {
86 if (lList1.indx < maxSPoint) /* add that option to his list */ 86 if (lList1.indx < maxSPoint) /* add that option to his list */
87 { 87 {
88 lList1.indx = lList1.indx + 1; 88 lList1.indx = lList1.indx + 1;
89 spanGroup(tx, ty, &plist2); /* find my liberty */ 89 spanGroup(tx, ty, &plist2); /* find my liberty */
90 lList1.p[lList1.indx].px = plist2.p[1].px; 90 lList1.p[lList1.indx].px = plist2.p[1].px;
91 lList1.p[lList1.indx].py = plist2.p[1].py; 91 lList1.p[lList1.indx].py = plist2.p[1].py;
92 } 92 }
93 else 93 else
94 { 94 {
95 result = FALSE; 95 result = FALSE;
96 goto one; 96 goto one;
97 } 97 }
@@ -123,65 +123,65 @@ short tx, ty, gx, gy, *escape, tkMark;
123 { 123 {
124 mark2 = playMark; 124 mark2 = playMark;
125 tryPlay(lList1.p[i].px, lList1.p[i].py, him); 125 tryPlay(lList1.p[i].px, lList1.p[i].py, him);
126 libList[i] = gList[gMap[groupIDs[gx][gy]]].libC; 126 libList[i] = gList[gMap[groupIDs[gx][gy]]].libC;
127 if ((libList[i] > treeLibLim) || 127 if ((libList[i] > treeLibLim) ||
128 ((libList[i] > (depthLimit - depth)) && 128 ((libList[i] > (depthLimit - depth)) &&
129 (libList[i] > 2))) 129 (libList[i] > 2)))
130 { 130 {
131 *escape = TRUE; 131 *escape = TRUE;
132 result = FALSE; 132 result = FALSE;
133 goto one; 133 goto one;
134 } 134 }
135 undoTo(mark2); 135 undoTo(mark2);
136 } 136 }
137 for (i = 1; i <= lList1.indx - 1; i++) 137 for (i = 1; i <= lList1.indx - 1; i++)
138 for (j = i + 1; j <= lList1.indx; j++) 138 for (j = i + 1; j <= lList1.indx; j++)
139 if (libList[i] < libList[j]) 139 if (libList[i] < libList[j])
140 { 140 {
141 tl = libList[i]; 141 tl = libList[i];
142 libList[i] = libList[j]; 142 libList[i] = libList[j];
143 libList[j] = tl; 143 libList[j] = tl;
144 tp = lList1.p[i]; 144 tp = lList1.p[i];
145 lList1.p[i] = lList1.p[j]; 145 lList1.p[i] = lList1.p[j];
146 lList1.p[j] = tp; 146 lList1.p[j] = tp;
147 } 147 }
148 } 148 }
149 for (i = 1; i <= lList1.indx + 1; i++) /* try his responses */ 149 for (i = 1; i <= lList1.indx + 1; i++) /* try his responses */
150 { 150 {
151 mark2 = playMark; 151 mark2 = playMark;
152 if (i <= lList1.indx) /* try his move */ 152 if (i <= lList1.indx) /* try his move */
153 { 153 {
154 tryPlay(lList1.p[i].px, lList1.p[i].py, him); /* play his response */ 154 tryPlay(lList1.p[i].px, lList1.p[i].py, him); /* play his response */
155 pause(); 155// pause();
156 if (gList[gMap[groupIDs[lList1.p[i].px] 156 if (gList[gMap[groupIDs[lList1.p[i].px]
157 [lList1.p[i].py]]].libC < 2) 157 [lList1.p[i].py]]].libC < 2)
158 goto two; /* a bogus move */ 158 goto two; /* a bogus move */
159 } 159 }
160 else if (gList[gMap[groupIDs[gx][gy]]].libC <= 1) 160 else if (gList[gMap[groupIDs[gx][gy]]].libC <= 1)
161 { 161 {
162 result = TRUE; 162 result = TRUE;
163 goto one; 163 goto one;
164 } 164 }
165 if (gList[gMap[groupIDs[gx][gy]]].libC > treeLibLim) 165 if (gList[gMap[groupIDs[gx][gy]]].libC > treeLibLim)
166 { 166 {
167 *escape = TRUE; 167 *escape = TRUE;
168 result = FALSE; 168 result = FALSE;
169 goto one; 169 goto one;
170 } 170 }
171 if (gList[gMap[groupIDs[gx][gy]]].libC > 1) 171 if (gList[gMap[groupIDs[gx][gy]]].libC > 1)
172 { /* look at my responses */ 172 { /* look at my responses */
173 sSpanGroup(gx, gy, &lList2); /* list his liberties */ 173 sSpanGroup(gx, gy, &lList2); /* list his liberties */
174 dStart = lList2.indx + 1; 174 dStart = lList2.indx + 1;
175 if (adjInAtari) /* he wins */ 175 if (adjInAtari) /* he wins */
176 { 176 {
177 result = FALSE; 177 result = FALSE;
178 goto one; 178 goto one;
179 } 179 }
180 if ((lList2.indx > 2) && adj2Libs) /* he wins */ 180 if ((lList2.indx > 2) && adj2Libs) /* he wins */
181 { 181 {
182 result = FALSE; 182 result = FALSE;
183 goto one; 183 goto one;
184 } 184 }
185 for (k = 1; k <= maxSPoint; k++) 185 for (k = 1; k <= maxSPoint; k++)
186 libList[k] = -1; 186 libList[k] = -1;
187 if (utilPlayLevel > 4) /* account for diagonal moves */ 187 if (utilPlayLevel > 4) /* account for diagonal moves */