/[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.33 - (hide annotations)
Fri Nov 7 07:09:46 2025 UTC (4 months, 1 week ago) by sysadm
Branch: MAIN
Changes since 1.32: +24 -10 lines
Content type: text/x-csrc
Apply BWF to set / change chicken name

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

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