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

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