summaryrefslogtreecommitdiff
path: root/apps/recorder
diff options
context:
space:
mode:
authorBjörn Stenberg <bjorn@haxx.se>2002-06-24 11:02:18 +0000
committerBjörn Stenberg <bjorn@haxx.se>2002-06-24 11:02:18 +0000
commitc40ac3249a851cdf5ed1f6e096a8411b569cb6ab (patch)
tree22d4ce4674d2be28d247d9611f72c3a14a83700b /apps/recorder
parentb922a96ae3c6fb7e117923512108a4b3056469c1 (diff)
downloadrockbox-c40ac3249a851cdf5ed1f6e096a8411b569cb6ab.tar.gz
rockbox-c40ac3249a851cdf5ed1f6e096a8411b569cb6ab.zip
Removed some duplicated code
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@1145 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/recorder')
-rw-r--r--apps/recorder/sokoban.c180
1 files changed, 74 insertions, 106 deletions
diff --git a/apps/recorder/sokoban.c b/apps/recorder/sokoban.c
index 5defd134d7..84e70a0a02 100644
--- a/apps/recorder/sokoban.c
+++ b/apps/recorder/sokoban.c
@@ -992,6 +992,7 @@ void sokoban_loop(void) {
992 update_screen(); 992 update_screen();
993 993
994 while(1) { 994 while(1) {
995 bool idle = false;
995 switch ( button_get(true) ) { 996 switch ( button_get(true) ) {
996 997
997 case BUTTON_OFF: 998 case BUTTON_OFF:
@@ -1001,28 +1002,23 @@ void sokoban_loop(void) {
1001 case BUTTON_F3: 1002 case BUTTON_F3:
1002 /* increase level */ 1003 /* increase level */
1003 boxes_to_go=0; 1004 boxes_to_go=0;
1005 idle=true;
1004 break; 1006 break;
1005 1007
1006 case BUTTON_F2: 1008 case BUTTON_F2:
1007 /* same level */ 1009 /* same level */
1008 load_level(current_level); 1010 load_level(current_level);
1009 lcd_clear_display();
1010 update_screen();
1011 moves=0; 1011 moves=0;
1012 idle=true;
1012 break; 1013 break;
1013 1014
1014 case BUTTON_F1: 1015 case BUTTON_F1:
1015 /* previous level */ 1016 /* previous level */
1016 if (current_level==0) { 1017 if (current_level)
1017 current_level=0;
1018 }
1019 else {
1020 current_level--; 1018 current_level--;
1021 }
1022 load_level(current_level); 1019 load_level(current_level);
1023 lcd_clear_display();
1024 update_screen();
1025 moves=0; 1020 moves=0;
1021 idle=true;
1026 break; 1022 break;
1027 1023
1028 case BUTTON_LEFT: 1024 case BUTTON_LEFT:
@@ -1031,16 +1027,12 @@ void sokoban_loop(void) {
1031 board[row][col-1]=5; 1027 board[row][col-1]=5;
1032 board[row][col]=current_spot; 1028 board[row][col]=current_spot;
1033 current_spot=1; 1029 current_spot=1;
1034 col--;
1035 moves++;
1036 break; 1030 break;
1037 1031
1038 case 3: /* if it is a home spot */ 1032 case 3: /* if it is a home spot */
1039 board[row][col-1]=5; 1033 board[row][col-1]=5;
1040 board[row][col]=current_spot; 1034 board[row][col]=current_spot;
1041 current_spot=3; 1035 current_spot=3;
1042 col--;
1043 moves++;
1044 break; 1036 break;
1045 1037
1046 case 4: 1038 case 4:
@@ -1050,13 +1042,6 @@ void sokoban_loop(void) {
1050 board[row][col-1]=board[row][col]; 1042 board[row][col-1]=board[row][col];
1051 board[row][col]=current_spot; 1043 board[row][col]=current_spot;
1052 current_spot=1; 1044 current_spot=1;
1053 col--;
1054 moves++;
1055 break;
1056
1057 /* if there is a wall then do not move the box */
1058 case 2:
1059 /* do nothing */
1060 break; 1045 break;
1061 1046
1062 case 3: /* if we are going from a blank to home */ 1047 case 3: /* if we are going from a blank to home */
@@ -1064,9 +1049,11 @@ void sokoban_loop(void) {
1064 board[row][col-1]=board[row][col]; 1049 board[row][col-1]=board[row][col];
1065 board[row][col]=current_spot; 1050 board[row][col]=current_spot;
1066 current_spot=1; 1051 current_spot=1;
1067 col--;
1068 boxes_to_go--; 1052 boxes_to_go--;
1069 moves++; 1053 break;
1054
1055 default:
1056 idle = true;
1070 break; 1057 break;
1071 } 1058 }
1072 break; 1059 break;
@@ -1078,14 +1065,7 @@ void sokoban_loop(void) {
1078 board[row][col-1]=board[row][col]; 1065 board[row][col-1]=board[row][col];
1079 board[row][col]=current_spot; 1066 board[row][col]=current_spot;
1080 current_spot=3; 1067 current_spot=3;
1081 col--;
1082 boxes_to_go++; 1068 boxes_to_go++;
1083 moves++;
1084 break;
1085
1086 /* if there is a wall then do not move the box */
1087 case 2:
1088 /* do nothing */
1089 break; 1069 break;
1090 1070
1091 case 3: /* if we are going from a home to home */ 1071 case 3: /* if we are going from a home to home */
@@ -1093,13 +1073,20 @@ void sokoban_loop(void) {
1093 board[row][col-1]=board[row][col]; 1073 board[row][col-1]=board[row][col];
1094 board[row][col]=current_spot; 1074 board[row][col]=current_spot;
1095 current_spot=3; 1075 current_spot=3;
1096 col--; 1076 break;
1097 moves++; 1077
1078 default:
1079 idle = true;
1098 break; 1080 break;
1099 } 1081 }
1082 break;
1083
1084 default:
1085 idle = true;
1086 break;
1100 } 1087 }
1101 lcd_clear_display(); 1088 if (!idle)
1102 update_screen(); 1089 col--;
1103 break; 1090 break;
1104 1091
1105 case BUTTON_RIGHT: /* if it is a blank spot */ 1092 case BUTTON_RIGHT: /* if it is a blank spot */
@@ -1108,16 +1095,12 @@ void sokoban_loop(void) {
1108 board[row][col+1]=5; 1095 board[row][col+1]=5;
1109 board[row][col]=current_spot; 1096 board[row][col]=current_spot;
1110 current_spot=1; 1097 current_spot=1;
1111 col++;
1112 moves++;
1113 break; 1098 break;
1114 1099
1115 case 3: /* if it is a home spot */ 1100 case 3: /* if it is a home spot */
1116 board[row][col+1]=5; 1101 board[row][col+1]=5;
1117 board[row][col]=current_spot; 1102 board[row][col]=current_spot;
1118 current_spot=3; 1103 current_spot=3;
1119 col++;
1120 moves++;
1121 break; 1104 break;
1122 1105
1123 case 4: 1106 case 4:
@@ -1127,13 +1110,6 @@ void sokoban_loop(void) {
1127 board[row][col+1]=board[row][col]; 1110 board[row][col+1]=board[row][col];
1128 board[row][col]=current_spot; 1111 board[row][col]=current_spot;
1129 current_spot=1; 1112 current_spot=1;
1130 col++;
1131 moves++;
1132 break;
1133
1134 /* if there is a wall then do not move the box */
1135 case 2:
1136 /* do nothing */
1137 break; 1113 break;
1138 1114
1139 case 3: /* if we are going from a blank to home */ 1115 case 3: /* if we are going from a blank to home */
@@ -1141,9 +1117,11 @@ void sokoban_loop(void) {
1141 board[row][col+1]=board[row][col]; 1117 board[row][col+1]=board[row][col];
1142 board[row][col]=current_spot; 1118 board[row][col]=current_spot;
1143 current_spot=1; 1119 current_spot=1;
1144 col++;
1145 boxes_to_go--; 1120 boxes_to_go--;
1146 moves++; 1121 break;
1122
1123 default:
1124 idle = true;
1147 break; 1125 break;
1148 } 1126 }
1149 break; 1127 break;
@@ -1155,14 +1133,7 @@ void sokoban_loop(void) {
1155 board[row][col+1]=board[row][col]; 1133 board[row][col+1]=board[row][col];
1156 board[row][col]=current_spot; 1134 board[row][col]=current_spot;
1157 current_spot=3; 1135 current_spot=3;
1158 col++;
1159 boxes_to_go++; 1136 boxes_to_go++;
1160 moves++;
1161 break;
1162
1163 /* if there is a wall then do not move the box */
1164 case 2:
1165 /* do nothing */
1166 break; 1137 break;
1167 1138
1168 case 3: 1139 case 3:
@@ -1170,14 +1141,20 @@ void sokoban_loop(void) {
1170 board[row][col+1]=board[row][col]; 1141 board[row][col+1]=board[row][col];
1171 board[row][col]=current_spot; 1142 board[row][col]=current_spot;
1172 current_spot=3; 1143 current_spot=3;
1173 col++; 1144 break;
1174 moves++; 1145
1146 default:
1147 idle = true;
1175 break; 1148 break;
1176 } 1149 }
1177 break; 1150 break;
1151
1152 default:
1153 idle = true;
1154 break;
1178 } 1155 }
1179 lcd_clear_display(); 1156 if (!idle)
1180 update_screen(); 1157 col++;
1181 break; 1158 break;
1182 1159
1183 case BUTTON_UP: 1160 case BUTTON_UP:
@@ -1186,16 +1163,12 @@ void sokoban_loop(void) {
1186 board[row-1][col]=5; 1163 board[row-1][col]=5;
1187 board[row][col]=current_spot; 1164 board[row][col]=current_spot;
1188 current_spot=1; 1165 current_spot=1;
1189 row--;
1190 moves++;
1191 break; 1166 break;
1192 1167
1193 case 3: /* if it is a home spot */ 1168 case 3: /* if it is a home spot */
1194 board[row-1][col]=5; 1169 board[row-1][col]=5;
1195 board[row][col]=current_spot; 1170 board[row][col]=current_spot;
1196 current_spot=3; 1171 current_spot=3;
1197 row--;
1198 moves++;
1199 break; 1172 break;
1200 1173
1201 case 4: 1174 case 4:
@@ -1205,13 +1178,6 @@ void sokoban_loop(void) {
1205 board[row-1][col]=board[row][col]; 1178 board[row-1][col]=board[row][col];
1206 board[row][col]=current_spot; 1179 board[row][col]=current_spot;
1207 current_spot=1; 1180 current_spot=1;
1208 row--;
1209 moves++;
1210 break;
1211
1212 /* if there is a wall then do not move the box */
1213 case 2:
1214 /* do nothing */
1215 break; 1181 break;
1216 1182
1217 case 3: /* if we are going from a blank to home */ 1183 case 3: /* if we are going from a blank to home */
@@ -1219,9 +1185,11 @@ void sokoban_loop(void) {
1219 board[row-1][col]=board[row][col]; 1185 board[row-1][col]=board[row][col];
1220 board[row][col]=current_spot; 1186 board[row][col]=current_spot;
1221 current_spot=1; 1187 current_spot=1;
1222 row--;
1223 boxes_to_go--; 1188 boxes_to_go--;
1224 moves++; 1189 break;
1190
1191 default:
1192 idle = true;
1225 break; 1193 break;
1226 } 1194 }
1227 break; 1195 break;
@@ -1233,14 +1201,7 @@ void sokoban_loop(void) {
1233 board[row-1][col]=board[row][col]; 1201 board[row-1][col]=board[row][col];
1234 board[row][col]=current_spot; 1202 board[row][col]=current_spot;
1235 current_spot=3; 1203 current_spot=3;
1236 row--;
1237 boxes_to_go++; 1204 boxes_to_go++;
1238 moves++;
1239 break;
1240
1241 /* if there is a wall then do not move the box */
1242 case 2:
1243 /* do nothing */
1244 break; 1205 break;
1245 1206
1246 case 3: /* if we are going from a home to home */ 1207 case 3: /* if we are going from a home to home */
@@ -1248,14 +1209,20 @@ void sokoban_loop(void) {
1248 board[row-1][col]=board[row][col]; 1209 board[row-1][col]=board[row][col];
1249 board[row][col]=current_spot; 1210 board[row][col]=current_spot;
1250 current_spot=3; 1211 current_spot=3;
1251 row--; 1212 break;
1252 moves++; 1213
1214 default:
1215 idle = true;
1253 break; 1216 break;
1254 } 1217 }
1255 break; 1218 break;
1219
1220 default:
1221 idle = true;
1222 break;
1256 } 1223 }
1257 lcd_clear_display(); 1224 if (!idle)
1258 update_screen(); 1225 row--;
1259 break; 1226 break;
1260 1227
1261 case BUTTON_DOWN: 1228 case BUTTON_DOWN:
@@ -1264,16 +1231,12 @@ void sokoban_loop(void) {
1264 board[row+1][col]=5; 1231 board[row+1][col]=5;
1265 board[row][col]=current_spot; 1232 board[row][col]=current_spot;
1266 current_spot=1; 1233 current_spot=1;
1267 row++;
1268 moves++;
1269 break; 1234 break;
1270 1235
1271 case 3: /* if it is a home spot */ 1236 case 3: /* if it is a home spot */
1272 board[row+1][col]=5; 1237 board[row+1][col]=5;
1273 board[row][col]=current_spot; 1238 board[row][col]=current_spot;
1274 current_spot=3; 1239 current_spot=3;
1275 row++;
1276 moves++;
1277 break; 1240 break;
1278 1241
1279 case 4: 1242 case 4:
@@ -1283,13 +1246,6 @@ void sokoban_loop(void) {
1283 board[row+1][col]=board[row][col]; 1246 board[row+1][col]=board[row][col];
1284 board[row][col]=current_spot; 1247 board[row][col]=current_spot;
1285 current_spot=1; 1248 current_spot=1;
1286 row++;
1287 moves++;
1288 break;
1289
1290 /* if there is a wall then do not move the box */
1291 case 2:
1292 /* do nothing */
1293 break; 1249 break;
1294 1250
1295 case 3: /* if we are going from a blank to home */ 1251 case 3: /* if we are going from a blank to home */
@@ -1297,9 +1253,11 @@ void sokoban_loop(void) {
1297 board[row+1][col]=board[row][col]; 1253 board[row+1][col]=board[row][col];
1298 board[row][col]=current_spot; 1254 board[row][col]=current_spot;
1299 current_spot=1; 1255 current_spot=1;
1300 row++;
1301 boxes_to_go--; 1256 boxes_to_go--;
1302 moves++; 1257 break;
1258
1259 default:
1260 idle = true;
1303 break; 1261 break;
1304 } 1262 }
1305 break; 1263 break;
@@ -1311,14 +1269,7 @@ void sokoban_loop(void) {
1311 board[row+1][col]=board[row][col]; 1269 board[row+1][col]=board[row][col];
1312 board[row][col]=current_spot; 1270 board[row][col]=current_spot;
1313 current_spot=3; 1271 current_spot=3;
1314 row++;
1315 boxes_to_go++; 1272 boxes_to_go++;
1316 moves++;
1317 break;
1318
1319 /* if there is a wall then do not move the box */
1320 case 2:
1321 /* do nothing */
1322 break; 1273 break;
1323 1274
1324 case 3: /* if we are going from a home to home */ 1275 case 3: /* if we are going from a home to home */
@@ -1326,16 +1277,33 @@ void sokoban_loop(void) {
1326 board[row+1][col]=board[row][col]; 1277 board[row+1][col]=board[row][col];
1327 board[row][col]=current_spot; 1278 board[row][col]=current_spot;
1328 current_spot=3; 1279 current_spot=3;
1329 row++; 1280 break;
1330 moves++; 1281
1282 default:
1283 idle = true;
1331 break; 1284 break;
1332 } 1285 }
1286 break;
1287
1288 default:
1289 idle = true;
1290 break;
1333 } 1291 }
1334 lcd_clear_display(); 1292 if (!idle)
1335 update_screen(); 1293 row++;
1336 break; 1294 break;
1295
1296 default:
1297 idle = true;
1298 break;
1299 }
1300
1301 if (!idle) {
1302 moves++;
1303 lcd_clear_display();
1304 update_screen();
1337 } 1305 }
1338 1306
1339 if (boxes_to_go==0) { 1307 if (boxes_to_go==0) {
1340 moves=0; 1308 moves=0;
1341 current_level++; 1309 current_level++;