/[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.38 - (hide annotations)
Fri Dec 19 06:16:27 2025 UTC (2 months, 4 weeks ago) by sysadm
Branch: MAIN
Changes since 1.37: +10 -10 lines
Content type: text/x-csrc
Append \n to the end of logging message by log_...()
Remove ending \n from each logging message

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

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