/[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.40 - (hide annotations)
Sun Jan 18 09:14:57 2026 UTC (8 weeks, 3 days ago) by sysadm
Branch: MAIN
CVS Tags: HEAD
Changes since 1.39: +2 -2 lines
Content type: text/x-csrc
Fix bug in pressany()

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

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