商人过河C语言程序编程_第1页
商人过河C语言程序编程_第2页
商人过河C语言程序编程_第3页
商人过河C语言程序编程_第4页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、#include <stdio.h>#include <stdlib.h>#include <string.h>void basic_interface()/基本界面system("clear");system("tput cup 5 20");printf("=n ");system("tput cup 6 20");printf("*n");system("tput cup 7 20");printf("*_欢迎使用商人过河游

2、戏!_*n");system("tput cup 8 20");printf("*n");system("tput cup 9 20");游戏说明*n");system("tput cup 10 20");printf("* 三个商人带着三个随从和货物过河,船每次最多只能载两个人,要求在过河期间,任一岸上商人的人数*n");system("tput cup 11 20");printf("* 要大于或等于随从的人数,否则随从会杀掉商人抢走货物。*

3、n");system("tput cup 12 20");printf("*n");system("tput cup 13 20");printf("*游戏操作 :*n");system("tput cup 14 20 ");printf("*( 1)依次输入过河的商人和随从人数; *n");system("tput cup 15 20");printf("*( 2)非法输入按键将重新开始。*n");system("

4、tput cup 16 20");printf("*-*n");system("tput cup 1720");printf("*n");system("tput cup 17113");printf("*n");system("tput cup 1820");printf("*n");system("tput cup 18113");printf("*n");system("tput cup 1

5、920");printf("*n");system("tput cup 19113");printf("*n");system("tput cup 2020");printf("*n");system("tput cup 20113");printf("*n");system("tput cup 2120");printf("*n");system("tput cup 21113");p

6、rintf("*n");system("tput cup 2220");printf("*n");system("tput cup 22113");printf("*n");system("tput cup 2320");printf("*n");system("tput cup 23113");printf("*n");system("tput cup 2420");printf("*

7、n");system("tput cup 24113");printf("*n");system("tput cup 2520");printf("*n");system("tput cup 25113");printf("*n");system("tput cup 2620");printf("*n");system("tput cup 26113");printf("*n");sys

8、tem("tput cup 2720");printf("*n");system("tput cup 27113");printf("*n");system("tput cup 28 20"); printf("*n");char a6;/此岸char b6;/彼岸void print_state(char a,char b)/ 打印渡河状态int i,j,ab,aa,ba,bb;/ab此岸商人数, aa此岸随从数bb彼岸商人数,ba,彼岸随从数aa=ab=ba=bb=0;b

9、asic_interface() ;system("tput cup 18 40");printf("system("tput cup 19 40");printf("system("tput cup 18 73");printf("system("tput cup 19 73");printf("此岸商人数: n");此岸随从数: n");彼岸商人数 : n");彼岸随从数: n");for(i=0;i<6;i+)/计算此岸商人

10、数和随从数if(ai='B')ab+;else if (ai='A')aa+;system("tput cup 18 53");printf("%dn",ab);/输出此岸商人数system("tput cup 19 53");printf("%dn",aa);/输出此岸随从数for(j=0;j<6;j+)/计算彼岸商人数和随从数if(bj='B')bb+;else if(bj='A')ba+;system("tput cup 18 8

11、6");printf("%dn",bb);/输出彼岸商人数system("tput cup 19 86");printf("%dn",ba);/输出彼岸随从数if(ab=0 && aa=0 && bb=3 && ba=3)/ 判断是否渡河成功system("tput cup 23 40");printf(" 恭喜你!你已成功帮助商人安全过河!按任意键退出 .n");system("tput cup 30 0");get

12、char();system("clear");exit(0);void process()int i,j,go_b,go_a,back_b,back_a,ab,aa,bb,ba;/go_b, 过去商人数, go_a, 过去随从数, back_b, 回来商人数, back_a, 回来随从数,char ch;Start:basic_interface();system("tput cup 20 40");printf(" 请按任意键开始游戏(按 Q键退出) ."); ch=getchar();if(ch='Q'|ch=&#

13、39;q')system("clear");exit(0);for(i=0;i<3;i+)ai='B'for(i=3;i<6;i+)ai='A'for(i=0;i<6;i+)bi='0'print_state(a,b);while(1)/ 过去for(ab=0,aa=0,i=0;i<6;i+)/计算此岸的商人数和随从数if(ai='B')ab+;else if(ai='A')aa+;system("tput cup 21 43");printf

14、("输入去彼岸商人的人数:n");system("tput cup 22 43");printf("输入去彼岸随从的人数:n");system("tput cup 21 65");scanf("%d",&go_b);/输入去彼岸的商人数getchar();system("tput cup 22 65");输入去彼岸的随从数getchar();if(go_b<0 | go_b>ab | go_a<0 | go_a>aa |go_a+go_b<

15、;1 |go_a+go_b>2)/输入不合法system("tput cup 24 40");printf("输入有误!按任意键重新开始.");getchar();goto Start;for(i=1;i<=go_b;i+)/过河后两边的状态for(j=0;j<6;j+)if(aj='B')aj='0'break;for(i=1;i<=go_b;i+)for(j=0;j<6;j+)if(bj='0')bj='B'break;for(i=1;i<=go_a;

16、i+)for(j=0;j<6;j+)if(aj='A')aj='0'break;for(i=1;i<=go_a;i+)for(j=0;j<6;j+)if(bj='0')bj='A'break;for(aa=0,ab=0,i=0;i<6;i+)/统计过河后 a 岸的商人数和随从数if(ai='A')aa+;else if(ai='B')ab+;for(ba=0,bb=0,i=0;i<6;i+)/统计过河后 b 按的商人数和随从数if(bi='A')ba+;

17、else if(bi='B')bb+;if(ab=3) |(bb=3) | (ab=aa) | (bb=ba)/ 可以继续下一步的条件print_state(a,b);elsesystem("tput cup 24 40");printf("商人被杀,按任意键重新开始.n");system("tput cup 30 0");getchar();goto Start;/ 回来for(bb=0,ba=0,i=0;i<6;i+) /统计对岸的商人数和随从数if(bi='B')bb+;else if(bi

18、='A')ba+;system("tput cup 24 43");printf("输入回此岸商人的人数:n");system("tput cup 25 43");printf("输入回此岸随从的人数:n");system("tput cup 24 65");scanf("%d",&back_b);system("tput cup 25 65");scanf("%d",&back_a);if(back_b

19、<0 | back_b>bb | back_a<0 | back_a>ba | back_a+back_b<1 | back_a+back_b>2) /判断输入是否合法system("tput cup 26 40");printf("输入有误!按任意键重新开始.n");system("tput cup 30 0");getchar();goto Start;for(i=1;i<=back_b;i+)/返回后的状态for(j=0;j<6;j+)if(bj='B')bj='0'break;for(i=1;i

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论