/[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.35 - (hide annotations)
Tue Nov 11 00:28:05 2025 UTC (4 months ago) by sysadm
Branch: MAIN
Changes since 1.34: +4 -0 lines
Content type: text/x-csrc
Use config.h

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

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