C语言写的游戏:"能解题者,你就是李白诗仙!"该如何解决
C语言写的游戏:"能解题者,你就是李白诗仙!"
整本C语言二级教材我才看了前4章,C语言不过如此.....
我经常问自己:"我是天才吗?"
"我是天才!".....
本文章献给广大的C语言初学者,劳动者,开发者...
本程序用BC++ Builder,C语言编写。源工程和执行文件下载地址:
http://cid-c3a069dbfb1fcc3d.skydrive.live.com/self.aspx/.Public/BC++%20Game.zip live空间共享文件夹
http://download.****.net/source/1739966 ****下载,需要2积分
10年前,我在一所学校的地摊上买了一本....
.....
本文来自我的博客 [url]http://hi.baidu.com/moji4[/url]
从静悄悄的学校里走出来的我,很难再相信......
更详细的代码,著解,背景,思路,原理..请到我的博客去看。
希望明年二级等考可以使用BC++ Builder:
------解决方案--------------------
楼主努力!
------解决方案--------------------
呃 gotoxy ...
------解决方案--------------------
LZ继续加油。。。。
------解决方案--------------------
整本C语言二级教材我才看了前4章,C语言不过如此.....
我经常问自己:"我是天才吗?"
"我是天才!".....
本文章献给广大的C语言初学者,劳动者,开发者...
本程序用BC++ Builder,C语言编写。源工程和执行文件下载地址:
http://cid-c3a069dbfb1fcc3d.skydrive.live.com/self.aspx/.Public/BC++%20Game.zip live空间共享文件夹
http://download.****.net/source/1739966 ****下载,需要2积分
- C/C++ code
char Tab=18; void Switchby(char a,char order[][5]); void Prpoem(char poem[][5],char order[]); //游戏由BC++,C语言编写,普通函数不需要加头文件。建议你们还是加上常用的头文件,可以保证某些函数正常使用。 void main(){ void RandomAnyby(char poem[][5],char order[]); char poem[20][5]={"|床","|前","|明","|月","|光","|疑","|是","|地","|上","|霜",\ "|\xc5\x65","|\xee\x5e","|\xcd\xfb","|\xc3\xf7","|\xd4\xc2",\ "|\xb5\xcd","|\xee\x5e","|\xcb\xbc","| ","|\xe0\x6c"}; char order[20]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19}; char by; #define T "\t\t" #define H "___________" system("color e"); Prpoem(poem,order); getch(); RandomAnyby(poem,order); while(by=getch()){ if(by=='w'||by=='s'||by=='a'||by=='d')Switchby(by,order); Prpoem(poem,order); } } void Prpoem(char poem[][5],char order[]){ //gotoxy()函数是界面输出与流畅的关键,千万不要使用clrscr(),"cls",否则本游戏宣布无望。 int i; gotoxy(1,1); for(i=0;i<20;i++){ if(i==0)printf("\n"T T T"\xec\x6f\n"T H T"\xd2\xb9\n"T); if(i==5||i==10||i==15)printf("\n"T H"\n"T); printf("%s",poem[order[i]]); if(i==4||i==14)printf("|,");else if(i==9||i==19)printf("|."); if(i==4)printf(T"\xd4\x8a"); } } void Switchby(char a,char order[][5]){ int re,i,agen; switch (a){ case 'w': re=Tab%5,agen=order[0][re]; for(i=0;i<3;i++)order[i][re]=order[i+1][re]; order[3][re]=agen;Tab=Tab-5<0?15+re:Tab-5;break; case 's': re=Tab%5,agen=order[3][re]; for(i=3;i>0;i--) order[i][re]=order[i-1][re]; order[0][re]=agen;Tab=Tab+5>19?re:Tab+5;break; case 'a': re=Tab/5;agen=order[re][0]; for(i=0;i<4;i++)order[re][i]=order[re][i+1]; order[re][4]=agen;Tab=Tab-1<re*5?re*5+4:Tab-1;break; case 'd': re=Tab/5;agen=order[re][4]; for(i=4;i>0;i--)order[re][i]=order[re][i-1]; order[re][0]=agen;Tab=Tab+1>re*5+4?re*5:Tab+1;break; }printf("\t\t%02d",Tab); } void RandomAnyby(char poem[][5],char order[]){ //n,难度,=1最简单;之后就要花些脑子咯。15如果你解不了,放心,运气好的时候很容易通关。本人靠运气以过20。 char n=20,by,r,i; srand(time(0)); while(n){ r=(1+rand()%7); if(11*r%4==0) by='w'; if(11*r%4==1) by='a'; if(11*r%4==2) by='d'; if(11*r%4==3) by='s'; for(i=0;i<r;i++) Switchby(by,order),Prpoem(poem,order); n--;} }/*代码合理运用了一维,二维数组。写这样的游戏程序,定以CPU使用为最高标准,否则再简单的代码和再聪明的头脑,也是拖累速度。 如果你用VC的请你自行翻译,或者请你将源码贴上来。据我目前了解,VC下要处理两个问题: 1.BC可以使用gotoxy()函数,这个函数只不过移动光标而已。VC不能,但是有其它方法。 2.BC,VC下子过程如何用二维来使用和访问一维数组?BC中直接使用指针就可以了,VC下可能要传递N个指针*/
10年前,我在一所学校的地摊上买了一本....
.....
本文来自我的博客 [url]http://hi.baidu.com/moji4[/url]
从静悄悄的学校里走出来的我,很难再相信......
更详细的代码,著解,背景,思路,原理..请到我的博客去看。
希望明年二级等考可以使用BC++ Builder:
------解决方案--------------------
楼主努力!
------解决方案--------------------
呃 gotoxy ...
------解决方案--------------------
LZ继续加油。。。。
------解决方案--------------------