/[LeafOK_CVS]/lbbs/utils/game/chicken.c
ViewVC logotype

Annotation of /lbbs/utils/game/chicken.c

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.28 - (hide annotations)
Wed Jul 2 04:17:33 2025 UTC (8 months, 2 weeks ago) by sysadm
Branch: MAIN
Changes since 1.27: +198 -198 lines
Content type: text/x-csrc
Support UTF8 instead of GBK

1 sysadm 1.28 /* 电子鸡 小码力..几a几b游戏.□ */
2 sysadm 1.1
3 sysadm 1.28 /* Writed by Birdman From 140.116.102.125 创意哇哈哈*/
4 sysadm 1.1
5     #include "bbs.h"
6     #include "common.h"
7     #include "io.h"
8 sysadm 1.13 #include "log.h"
9 sysadm 1.26 #include "login.h"
10 sysadm 1.3 #include "money.h"
11 sysadm 1.27 #include "screen.h"
12 sysadm 1.1 #include <stdio.h>
13 sysadm 1.27 #include <stdlib.h>
14 sysadm 1.11 #include <string.h>
15 sysadm 1.24 #include <time.h>
16 sysadm 1.11 #include <unistd.h>
17 sysadm 1.22 #include <sys/param.h>
18 sysadm 1.11
19 sysadm 1.13 #define DATA_FILE "var/chicken"
20     #define LOG_FILE "var/chicken/log"
21 sysadm 1.28 #define CHICKEN_NAME_LEN 40
22 sysadm 1.1
23     char
24 sysadm 1.28 *cstate[10] = {"我在吃饭", "偷吃零食", "拉便便", "笨蛋..输给鸡?", "哈..赢小鸡也没多光荣", "没食物啦..", "疲劳全消!"};
25     char *cage[9] = {"诞生", "周岁", "幼年", "少年", "青年", "活力", "壮年", "中年"};
26     char *menu[8] = {"游戏", "运动", "调教计能", "买卖工具", "清理鸡舍"};
27 sysadm 1.1
28 sysadm 1.17 char fname[FILE_PATH_LEN];
29 sysadm 1.1 time_t birth;
30 sysadm 1.10 int weight, satis, mon, day, age, angery, sick, oo, happy, clean, tiredstrong, play;
31     int winn, losee, last, chictime, agetmp, food, zfood;
32 sysadm 1.20 char chicken_name[CHICKEN_NAME_LEN + 1];
33 sysadm 1.1 FILE *cfp;
34 sysadm 1.10 int gold, x[9] = {0}, ran, q_mon, p_mon;
35 sysadm 1.1 unsigned long int bank;
36 sysadm 1.10 char buf[1], buf1[6];
37    
38 sysadm 1.17 static int load_chicken(void);
39     static int save_chicken(void);
40 sysadm 1.20 static int create_a_egg(void);
41 sysadm 1.10 static int death(void);
42     static int guess(void);
43     static int lose(void);
44     static int pressany(int i);
45     static int sell(void);
46     static int show_chicken(void);
47     static int situ(void);
48     static int select_menu(void);
49     static int tie(void);
50     static int win_c(void);
51    
52     int chicken_main()
53     {
54 sysadm 1.17 if (money_refresh() < 0)
55     {
56     return -1;
57     }
58    
59     setuserfile(fname, sizeof(fname), DATA_FILE);
60 sysadm 1.20
61     if (load_chicken() < 0)
62     {
63     return -2;
64     }
65    
66 sysadm 1.26 if (user_online_update("CHICKEN") < 0)
67     {
68     log_error("user_online_update(CHICKEN) error\n");
69     }
70    
71 sysadm 1.17 show_chicken();
72     select_menu();
73     save_chicken();
74    
75     return 0;
76     }
77    
78     static int load_chicken()
79     {
80 sysadm 1.10 FILE *fp;
81 sysadm 1.13 time_t now;
82 sysadm 1.24 struct tm ptime;
83 sysadm 1.10
84     agetmp = 1;
85     // modify_user_mode(CHICK);
86     time(&now);
87 sysadm 1.24 localtime_r(&now, &ptime);
88 sysadm 1.17
89 sysadm 1.10 if ((fp = fopen(fname, "r+")) == NULL)
90     {
91 sysadm 1.20 chicken_name[0] = '\0';
92     if (create_a_egg() < 0)
93     {
94     return -1;
95     }
96 sysadm 1.10 last = 1;
97     fp = fopen(fname, "r");
98 sysadm 1.20 fscanf(fp, "%d %d %d %d %d %d %d %d %d %d %d %d %d %d %s ", &weight, &mon, &day, &satis, &age, &oo, &happy, &clean, &tiredstrong, &play, &winn, &losee, &food, &zfood, chicken_name);
99 sysadm 1.10 fclose(fp);
100     }
101     else
102     {
103     last = 0;
104 sysadm 1.20 fscanf(fp, "%d %d %d %d %d %d %d %d %d %d %d %d %d %d %s ", &weight, &mon, &day, &satis, &age, &oo, &happy, &clean, &tiredstrong, &play, &winn, &losee, &food, &zfood, chicken_name);
105 sysadm 1.10 fclose(fp);
106     }
107 sysadm 1.17
108 sysadm 1.24 if (day < (ptime.tm_mon + 1))
109 sysadm 1.10 {
110 sysadm 1.24 age = ptime.tm_mday;
111 sysadm 1.10 age = age + 31 - mon;
112     }
113     else
114 sysadm 1.17 {
115 sysadm 1.24 age = ptime.tm_mday - mon;
116 sysadm 1.17 }
117    
118     return 0;
119     }
120    
121     int save_chicken()
122     {
123     FILE *fp;
124 sysadm 1.10
125     fp = fopen(fname, "r+");
126 sysadm 1.20 fprintf(fp, "%d %d %d %d %d %d %d %d %d %d %d %d %d %d %s ", weight, mon, day, satis, age, oo, happy, clean, tiredstrong, play, winn, losee, food, zfood, chicken_name);
127 sysadm 1.17 fclose(fp);
128 sysadm 1.10
129     return 0;
130     }
131    
132 sysadm 1.20 static int create_a_egg()
133 sysadm 1.10 {
134 sysadm 1.17 FILE *fp;
135 sysadm 1.24 struct tm ptime;
136 sysadm 1.10 time_t now;
137     time(&now);
138 sysadm 1.24 localtime_r(&now, &ptime);
139 sysadm 1.20 char name_tmp[CHICKEN_NAME_LEN + 1];
140 sysadm 1.14
141 sysadm 1.10 clrtobot(2);
142 sysadm 1.20 while (!SYS_server_exit && chicken_name[0] == '\0')
143 sysadm 1.10 {
144 sysadm 1.28 strncpy(chicken_name, "宝宝", sizeof(chicken_name) - 1);
145 sysadm 1.20 chicken_name[sizeof(chicken_name) - 1] = '\0';
146    
147     strncpy(name_tmp, chicken_name, sizeof(name_tmp) - 1);
148     name_tmp[sizeof(name_tmp) - 1] = '\0';
149 sysadm 1.14
150 sysadm 1.28 if (get_data(2, 0, "帮小鸡取个好名字:", name_tmp, sizeof(name_tmp), CHICKEN_NAME_LEN / 2, DOECHO) > 0)
151 sysadm 1.20 {
152     strncpy(chicken_name, name_tmp, sizeof(chicken_name) - 1);
153     chicken_name[sizeof(chicken_name) - 1] = '\0';
154     }
155 sysadm 1.10 }
156 sysadm 1.13
157     if ((fp = fopen(fname, "w")) == NULL)
158     {
159     log_error("Error!!cannot open file '%s'!\n", fname);
160 sysadm 1.20 return -2;
161 sysadm 1.13 }
162 sysadm 1.24 fprintf(fp, "%d %d %d %d %d %d %d %d %d %d %d %d %d %d %s ", ptime.tm_hour * 2, ptime.tm_mday, ptime.tm_mon + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 5, chicken_name);
163 sysadm 1.10 fclose(fp);
164 sysadm 1.17
165 sysadm 1.13 if ((fp = fopen(LOG_FILE, "a")) == NULL)
166 sysadm 1.10 {
167 sysadm 1.13 log_error("Error!!cannot open file '%s'!\n", LOG_FILE);
168 sysadm 1.20 return -2;
169 sysadm 1.10 }
170 sysadm 1.28 fprintf(fp, "%s 在 [%d/%d %d:%02d] 养了一只叫 %s 的小鸡\r\n",
171 sysadm 1.24 BBS_username, ptime.tm_mon + 1, ptime.tm_mday,
172     ptime.tm_hour, ptime.tm_min, chicken_name);
173 sysadm 1.10 fclose(fp);
174 sysadm 1.17
175 sysadm 1.10 return 0;
176     }
177    
178     static int show_chicken()
179     {
180     if (chictime >= 200)
181     {
182     weight -= 5;
183     clean += 3;
184     if (tiredstrong > 2)
185 sysadm 1.17 {
186 sysadm 1.10 tiredstrong -= 2;
187 sysadm 1.17 }
188 sysadm 1.10 }
189     if (weight < 0)
190 sysadm 1.17 {
191 sysadm 1.10 death();
192 sysadm 1.17 }
193    
194 sysadm 1.10 clrtobot(1);
195     prints(
196     "Name:%s"
197 sysadm 1.28 " Age :%d岁"
198     " 重量:%d"
199     " 食物:%d"
200     " 零食:%d"
201     " 疲劳:%d"
202     " 便便:%d\r\n"
203     " 生日:%d月%d日"
204     " 糖糖:%8d"
205     " 快乐度:%d"
206     " 满意度:%d",
207     // " 大补丸:%d\r\n",
208 sysadm 1.20 chicken_name, age, weight, food, zfood, tiredstrong, clean, day, mon, money_balance(), happy, satis); //,oo);
209 sysadm 1.10
210     moveto(3, 0);
211     if (age <= 16)
212     {
213     switch (age)
214     {
215     case 0:
216     case 1:
217 sysadm 1.28 prints(" ●●●●\r\n"
218     "● ●● ●\r\n"
219     "●●●●●●\r\n"
220     "●● ●●\r\n"
221     "●●●●●●\r\n"
222     " ●●●● ");
223 sysadm 1.10
224     break;
225     case 2:
226     case 3:
227 sysadm 1.28 prints(" ●●●●●●\r\n"
228     " ● ●\r\n"
229     "● ● ● ●\r\n"
230     "● ●\r\n"
231     "● ●● ●\r\n"
232     "● ●\r\n"
233     "● ●\r\n"
234     " ● ●\r\n"
235     " ●●●●●● ");
236 sysadm 1.10
237     break;
238     case 4:
239     case 5:
240    
241 sysadm 1.28 prints(" ●●●●●●\r\n"
242     " ● ●\r\n"
243     " ● ● ● ●\r\n"
244     " ● ●\r\n"
245     " ● ●● ●\r\n"
246     "●●● ●● ●●\r\n"
247     " ● ●\r\n"
248     " ● ●\r\n"
249     " ● ●●●● ●\r\n"
250     " ● ● ●\r\n"
251     " ● ");
252 sysadm 1.10 break;
253     case 6:
254     case 7:
255 sysadm 1.28 prints(" ● ●●●●●●\r\n"
256     "● ●● ● ●\r\n"
257     "● ● ●\r\n"
258     " ●●● ●\r\n"
259     "● ●\r\n"
260     "● ●● ●\r\n"
261     " ● ● ●\r\n"
262     " ● ●\r\n"
263     " ● ●\r\n"
264     " ●●●●●● ");
265 sysadm 1.10 break;
266    
267     case 8:
268     case 9:
269     case 10:
270 sysadm 1.28 prints(" ●● ●●\r\n"
271     " ●●●● ●●●●\r\n"
272     " ●●●●●●●●●●●\r\n"
273     " ● ●\r\n"
274     " ● ● ● ●\r\n"
275     "● ●\r\n"
276     "● ●●● ●\r\n"
277     " ● ●\r\n"
278     "● ● ● ●\r\n"
279     " ●● ●●●\r\n"
280     " ● ●\r\n"
281     " ● ●\r\n"
282     " ● ●●● ●\r\n"
283     " ● ● ●\r\n"
284     " ● ");
285 sysadm 1.10
286     break;
287    
288     case 11:
289     case 12:
290 sysadm 1.28 prints(" ●●●●●●\r\n"
291     " ● ● ●●\r\n"
292     " ● ● ● ●●\r\n"
293     " ●● ●●●\r\n"
294     "● ● ●●\r\n"
295     "●●●●●●●● ●●\r\n"
296     " ● ●●\r\n"
297     " ● ● ● ●\r\n"
298     " ● ● ● ●\r\n"
299     " ● ● ●\r\n"
300     " ● ●\r\n"
301     " ● ●●● ●\r\n"
302     " ● ● ● ●\r\n"
303     " ● ● ");
304 sysadm 1.10
305     break;
306     case 13:
307     case 14:
308 sysadm 1.28 prints(" ●●●●\r\n"
309     " ●●●●●●●●\r\n"
310     " ●●●●●●●●●●\r\n"
311     " ●●●●●●●●●●●●\r\n"
312     " ● ●●●●●●●●●\r\n"
313     "●● ● ●●\r\n"
314     "●●●● ●\r\n"
315     " ● ●\r\n"
316     " ●● ●●\r\n"
317     " ● ●●●●●● ●\r\n"
318     " ● ●\r\n"
319     " ● ●\r\n"
320     " ● ●\r\n"
321     " ●●● ●●● ");
322 sysadm 1.10 break;
323     case 15:
324     case 16:
325 sysadm 1.28 prints(" ● ●●●●●●\r\n"
326     "● ●● ● ●\r\n"
327     "● ● ●\r\n"
328     " ●●● ●\r\n"
329     "● ●\r\n"
330     "● ●● ●\r\n"
331     " ● ● ●\r\n"
332     " ● ● ● ●\r\n"
333     " ● ● ●\r\n"
334     " ● ●\r\n"
335     " ● ●\r\n"
336     " ● ●● ●●●\r\n"
337     " ● ●● ●\r\n"
338     " ● ● ");
339 sysadm 1.10
340     break;
341     }
342     }
343     else
344     {
345 sysadm 1.28 prints(" ●●●●●●●\r\n"
346     " ● ●●●\r\n"
347     " ● ● ● ●●●\r\n"
348     " ●●●●●●● ●●\r\n"
349     " ● ● ●\r\n"
350     " ●●●●●●● ● 我是大怪鸟\r\n"
351     " ● ● ●\r\n"
352     " ●●●●●● ●\r\n"
353     " ● ●\r\n"
354     " ● ●\r\n"
355     " ● ●\r\n"
356     "●● ● ●\r\n"
357     "● ●●●●●● ●●\r\n"
358     " ● ●\r\n"
359     "●●● 我是大怪鸟 ●●● ");
360 sysadm 1.10 }
361     if (clean > 10)
362     {
363     moveto(10, 30);
364 sysadm 1.28 prints("便便好多..臭臭...");
365 sysadm 1.10 if (clean > 15)
366     death();
367     press_any_key();
368     }
369    
370     moveto(17, 0);
371 sysadm 1.28 prints("[1]-吃饭 [2]-吃零食 [3]-清理鸡舍 [4]-跟小鸡猜拳 [5]-目前战绩");
372     prints("\r\n[6]-买鸡饲料$20 [7]-买零食$30 [8]-吃大补丸 [9]-卖鸡喔 ");
373 sysadm 1.10 return 0;
374     }
375    
376     static int select_menu()
377     {
378 sysadm 1.17 int loop = 1;
379 sysadm 1.18 char inbuf[2];
380 sysadm 1.24 struct tm ptime;
381 sysadm 1.10 time_t now;
382     time(&now);
383 sysadm 1.24 localtime_r(&now, &ptime);
384 sysadm 1.20 char name_tmp[CHICKEN_NAME_LEN + 1];
385 sysadm 1.17
386 sysadm 1.19 while (!SYS_server_exit && loop)
387 sysadm 1.10 {
388     moveto(23, 0);
389 sysadm 1.28 prints(" 使用帮助  c 改名字 k 杀鸡 t 消除非疲劳($50) q 退出 ");
390 sysadm 1.15 inbuf[0] = '\0';
391 sysadm 1.28 if (get_data(22, 0, "要做些什么呢?:", inbuf, sizeof(inbuf), 1, DOECHO) < 0)
392 sysadm 1.20 {
393     return 0; // input timeout
394     }
395 sysadm 1.10 if (tiredstrong > 20)
396     {
397     clearscr();
398     moveto(15, 30);
399 sysadm 1.28 prints("呜~~~小鸡会累坏的...要先去休息一下..");
400     prints("\r\n\r\n休 养 中");
401 sysadm 1.10 }
402     switch (inbuf[0])
403     {
404     case '1':
405     if (food <= 0)
406     {
407     pressany(5);
408     break;
409     }
410 sysadm 1.17 clrtobot(10);
411 sysadm 1.10 moveto(10, 0);
412 sysadm 1.28 prints(" □□□□□□\r\n"
413     " ∵∴ □ □\r\n"
414     " □ □ □□□□ □ \r\n"
415     " □ □ □ □ □□□□□□□ \r\n"
416     " Coke □ _□□□□□□□□□_ □□□□□□□□ \r\n"
417     " □ □ %%%%%%%%% □—∩∩—□ \r\n"
418     " □ □ □□□□□□□□□ │Mcdonald│      \r\n"
419     " □ □ ※※※※※※※※※  □————□ \r\n"
420     " □□□□□□ □□□□□□□□□ □□□□□□□□ ");
421 sysadm 1.10
422     pressany(0);
423     iflush();
424     food--;
425     tiredstrong++;
426     satis++;
427     if (age < 5)
428 sysadm 1.17 {
429 sysadm 1.10 weight = weight + (5 - age);
430 sysadm 1.17 }
431 sysadm 1.10 else
432 sysadm 1.17 {
433 sysadm 1.10 weight++;
434 sysadm 1.17 }
435 sysadm 1.10 if (weight > 100)
436     {
437     moveto(9, 30);
438 sysadm 1.28 prints("太重了啦..肥鸡~~你想撑死鸡啊?....哇咧○●××");
439 sysadm 1.10 press_any_key();
440     }
441     if (weight > 150)
442     {
443     moveto(9, 30);
444 sysadm 1.28 prints("鸡撑晕了~~");
445 sysadm 1.10 press_any_key();
446     }
447     if (weight > 200)
448 sysadm 1.17 {
449 sysadm 1.10 death();
450 sysadm 1.17 }
451 sysadm 1.10 break;
452     case '2':
453     if (zfood <= 0)
454     {
455     pressany(5);
456     break;
457     }
458 sysadm 1.17 clrtobot(10);
459 sysadm 1.10 moveto(10, 0);
460 sysadm 1.28 prints(" □\r\n"
461     " □□○\r\n"
462     " ■■\r\n"
463     " □□\r\n"
464     " □□\r\n"
465     "  □ \r\n"
466     "  □□ 水果酒冰淇淋苏打 嗯!好喝! ");
467 sysadm 1.10 pressany(1);
468     zfood--;
469     tiredstrong++;
470     happy++;
471     weight += 2;
472     if (weight > 100)
473     {
474     moveto(9, 30);
475 sysadm 1.28 prints("太重了啦..肥鸡~~");
476 sysadm 1.10 press_any_key();
477     }
478     if (weight > 200)
479 sysadm 1.17 {
480 sysadm 1.10 death();
481 sysadm 1.17 }
482 sysadm 1.10 break;
483     case '3':
484 sysadm 1.17 clrtobot(10);
485 sysadm 1.10 moveto(10, 0);
486 sysadm 1.28 prints(" □□□□□\r\n"
487     " 『□□□□\r\n"
488     " □□□□\r\n"
489     " □□□□□□□□◎□□□□\r\n"
490     " □□□□□□□□□□□□□\r\n"
491     " □□□□□□□□□ □\r\n"
492     " □□□□□□□□\r\n"
493     " □□□□□□\r\n"
494     "  □□□□□□\r\n"
495     " 耶耶耶...便便拉光光... ");
496 sysadm 1.10
497     pressany(2);
498     tiredstrong += 5;
499     clean = 0;
500     break;
501     case '4':
502     guess();
503 sysadm 1.24 satis += (ptime.tm_sec % 2);
504 sysadm 1.10 tiredstrong++;
505     break;
506     case '5':
507     situ();
508     break;
509     case '6':
510 sysadm 1.17 clrtobot(20);
511 sysadm 1.10 moveto(20, 0);
512 sysadm 1.17 if (money_withdraw(20) <= 0)
513 sysadm 1.10 {
514 sysadm 1.28 prints("糖果不足!!");
515 sysadm 1.10 press_any_key();
516     break;
517     }
518     food += 5;
519 sysadm 1.28 prints("\r\n食物有  %d 份", food);
520     prints(" 剩下  %d 糖", money_balance());
521 sysadm 1.10 press_any_key();
522     break;
523     case '7':
524 sysadm 1.17 clrtobot(20);
525 sysadm 1.10 moveto(20, 0);
526 sysadm 1.17 if (money_withdraw(30) <= 0)
527 sysadm 1.10 {
528 sysadm 1.28 prints("糖果不足!!");
529 sysadm 1.10 press_any_key();
530     break;
531     }
532     zfood += 5;
533 sysadm 1.28 prints("\r\n零食有  %d 份", zfood);
534     prints(" 剩下  %d 糖", money_balance());
535 sysadm 1.10 press_any_key();
536     break;
537     case '8':
538     if (oo > 0)
539     {
540 sysadm 1.17 clrtobot(10);
541 sysadm 1.10 moveto(10, 0);
542     prints("\r\n"
543 sysadm 1.28 " □□□□\r\n"
544     " □□□□\r\n"
545     " □□□□\r\n"
546     " 偷吃禁药大补丸.....");
547 sysadm 1.10 tiredstrong = 0;
548     happy += 3;
549     oo--;
550     pressany(6);
551     break;
552     }
553 sysadm 1.17 clrtobot(20);
554 sysadm 1.10 moveto(20, 4);
555 sysadm 1.28 prints("没大补丸啦!!");
556 sysadm 1.10 press_any_key();
557     break;
558     case '9':
559     if (age < 5)
560     {
561 sysadm 1.17 clrtobot(20);
562 sysadm 1.10 moveto(20, 4);
563 sysadm 1.28 prints("太小了...不得贩售未成年小鸡.....");
564 sysadm 1.10 press_any_key();
565     break;
566     }
567     sell();
568     break;
569     case 'k':
570     death();
571     break;
572     case 't':
573 sysadm 1.17 if (money_withdraw(50) <= 0)
574     {
575     clrtobot(20);
576     moveto(20, 4);
577 sysadm 1.28 prints("糖果不足!!");
578 sysadm 1.17 press_any_key();
579     break;
580     }
581     else
582     {
583     tiredstrong = 0;
584     }
585 sysadm 1.10 break;
586     case 'c':
587 sysadm 1.20 strncpy(name_tmp, chicken_name, sizeof(name_tmp) - 1);
588     name_tmp[sizeof(name_tmp) - 1] = '\0';
589    
590     clrline(22, 22);
591    
592 sysadm 1.28 if (get_data(22, 0, "帮小鸡取个好名字:", name_tmp, sizeof(name_tmp), CHICKEN_NAME_LEN / 2, DOECHO) > 0)
593 sysadm 1.18 {
594 sysadm 1.20 strncpy(chicken_name, name_tmp, sizeof(chicken_name) - 1);
595     chicken_name[sizeof(chicken_name) - 1] = '\0';
596     }
597 sysadm 1.10 break;
598 sysadm 1.17 case 'q':
599     loop = 0;
600     break;
601 sysadm 1.10 }
602 sysadm 1.18
603 sysadm 1.17 if (loop)
604     {
605     show_chicken();
606     }
607 sysadm 1.10 }
608     return 0;
609     }
610    
611     int death()
612     {
613     FILE *fp;
614 sysadm 1.24 struct tm ptime;
615 sysadm 1.10 time_t now;
616    
617     time(&now);
618 sysadm 1.24 localtime_r(&now, &ptime);
619 sysadm 1.10 clearscr();
620     clrtobot(5);
621 sysadm 1.13 if ((fp = fopen(LOG_FILE, "a")) == NULL)
622     {
623     log_error("Error!!cannot open file '%s'!\n", LOG_FILE);
624     return -1;
625     }
626 sysadm 1.28 fprintf(fp, "%s 在 [%d/%d %d:%02d] 的小鸡 %s 挂了~~ \r\n",
627 sysadm 1.24 BBS_username, ptime.tm_mon + 1, ptime.tm_mday,
628     ptime.tm_hour, ptime.tm_min, chicken_name);
629 sysadm 1.10 fclose(fp);
630 sysadm 1.28 prints("呜...小鸡挂了....");
631     prints("\r\n笨史了...赶出系统...");
632 sysadm 1.10 press_any_key();
633    
634     unlink(fname);
635 sysadm 1.17 load_chicken();
636    
637 sysadm 1.1 return 0;
638     }
639    
640 sysadm 1.11 int pressany(int i)
641 sysadm 1.10 {
642     int ch;
643     moveto(23, 0);
644     prints(" %s ", cstate[i]);
645     iflush();
646 sysadm 1.22 ch = igetch_t(MIN(MAX_DELAY_TIME, 60));
647 sysadm 1.10 moveto(23, 0);
648     clrtoeol();
649     iflush();
650 sysadm 1.22 return ch;
651 sysadm 1.10 }
652    
653     int guess()
654     {
655     int ch, com;
656    
657 sysadm 1.22 moveto(23, 0);
658 sysadm 1.28 prints("[1]-剪刀 [2]-石头 [3]-布:");
659 sysadm 1.22 clrtoeol();
660     iflush();
661    
662     ch = igetch_t(MIN(MAX_DELAY_TIME, 60));
663     if ((ch != '1') && (ch != '2') && (ch != '3'))
664 sysadm 1.10 {
665 sysadm 1.22 return -1; // error input
666     }
667 sysadm 1.10
668 sysadm 1.16 srand((unsigned int)time(NULL));
669 sysadm 1.10 com = rand() % 3;
670 sysadm 1.17
671 sysadm 1.10 moveto(21, 35);
672     switch (com)
673     {
674     case 0:
675 sysadm 1.28 prints("小鸡:剪刀");
676 sysadm 1.10 break;
677     case 1:
678 sysadm 1.28 prints("小鸡:石头");
679 sysadm 1.10 break;
680     case 2:
681 sysadm 1.28 prints("小鸡:布");
682 sysadm 1.10 break;
683     }
684 sysadm 1.17 clrtoeol();
685 sysadm 1.10
686     moveto(19, 0);
687    
688     switch (ch)
689     {
690     case '1':
691 sysadm 1.28 prints("笨鸡---看我捡来的刀---");
692 sysadm 1.10 if (com == 0)
693     tie();
694     else if (com == 1)
695     lose();
696     else if (com == 2)
697     win_c();
698     break;
699     case '2':
700 sysadm 1.28 prints("呆鸡---砸你一块石头!!---");
701 sysadm 1.10 if (com == 0)
702     win_c();
703     else if (com == 1)
704     tie();
705     else if (com == 2)
706     lose();
707     break;
708     case '3':
709 sysadm 1.28 prints("蠢鸡---送你一堆破布!---");
710 sysadm 1.10 if (com == 0)
711     lose();
712     else if (com == 1)
713     win_c();
714     else if (com == 2)
715     tie();
716     break;
717     }
718 sysadm 1.17 clrtoeol();
719    
720 sysadm 1.10 press_any_key();
721     return 0;
722     }
723    
724     int win_c()
725     {
726     winn++;
727 sysadm 1.17 clrtobot(20);
728 sysadm 1.10 moveto(20, 0);
729 sysadm 1.28 prints("判定:小鸡输了.... >_<~~~~~\r\n"
730 sysadm 1.10 "\r\n"
731     " ");
732     return 0;
733     }
734     int tie()
735     {
736 sysadm 1.17 clrtobot(20);
737     moveto(20, 0);
738 sysadm 1.28 prints("判定:平手 -_-\r\n"
739 sysadm 1.10 "\r\n"
740     " ");
741     return 0;
742     }
743     int lose()
744     {
745     losee++;
746     happy += 2;
747 sysadm 1.17 clrtobot(20);
748     moveto(20, 0);
749 sysadm 1.28 prints("小鸡赢罗 ∩∩\r\n"
750     " □ ");
751 sysadm 1.1 return 0;
752     }
753    
754 sysadm 1.10 int situ()
755     {
756 sysadm 1.17 clrtobot(16);
757 sysadm 1.10 moveto(16, 0);
758     prints(" ");
759     moveto(17, 0);
760 sysadm 1.28 prints("你: %d胜 %d负 ", winn, losee);
761 sysadm 1.10 moveto(18, 0);
762 sysadm 1.28 prints("鸡: %d胜 %d负 ", losee, winn);
763 sysadm 1.10
764     if (winn >= losee)
765     pressany(4);
766     else
767     pressany(3);
768    
769 sysadm 1.1 return 0;
770     }
771    
772 sysadm 1.10 int sell()
773     {
774     int sel = 0;
775 sysadm 1.17 char ans[2];
776 sysadm 1.24 struct tm ptime;
777 sysadm 1.10 FILE *fp;
778     time_t now;
779    
780     time(&now);
781 sysadm 1.24 localtime_r(&now, &ptime);
782 sysadm 1.10
783 sysadm 1.17 ans[0] = '\0';
784 sysadm 1.18
785 sysadm 1.10 sel += (happy * 10);
786     sel += (satis * 7);
787 sysadm 1.24 sel += ((ptime.tm_sec % 9) * 10);
788 sysadm 1.10 sel += weight;
789     sel += age * 10;
790 sysadm 1.16
791 sysadm 1.17 clrtobot(20);
792     moveto(20, 0);
793 sysadm 1.28 prints("小鸡值$$ %d 糖糖", sel);
794     if (get_data(19, 0, "真的要卖掉小鸡?[y/N]", ans, sizeof(ans), 1, DOECHO) < 0)
795 sysadm 1.20 {
796     return -1; // input timeout
797     }
798 sysadm 1.17 if (ans[0] != 'y')
799 sysadm 1.16 {
800 sysadm 1.17 return -1;
801 sysadm 1.16 }
802    
803 sysadm 1.17 if (money_deposit(sel) <= 0)
804     {
805     log_error("Cannot deposit money %d\n", sel);
806     moveto(21, 0);
807 sysadm 1.28 prints("无法存钱,放弃交易!");
808 sysadm 1.10 return -2;
809 sysadm 1.17 }
810 sysadm 1.10
811 sysadm 1.13 if ((fp = fopen(LOG_FILE, "a")) == NULL)
812     {
813     log_error("Error!!cannot open file '%s'!\n", LOG_FILE);
814 sysadm 1.17 return -2;
815 sysadm 1.13 }
816 sysadm 1.28 fprintf(fp, "%s 在 [%d/%d %d:%02d] 把小鸡 %s 以 %d 糖果卖了\r\n",
817 sysadm 1.24 BBS_username, ptime.tm_mon + 1, ptime.tm_mday,
818     ptime.tm_hour, ptime.tm_min, chicken_name, sel);
819 sysadm 1.10 fclose(fp);
820     clearscr();
821    
822 sysadm 1.17 unlink(fname);
823     load_chicken();
824    
825 sysadm 1.10 return 0;
826     }

webmaster@leafok.com
ViewVC Help
Powered by ViewVC 1.3.0-beta1