学习“推箱子”C语言编码:
#include <stdioh>
#include <conioh>
#include<stdlibh>
#include<windowsh>
int m =0; //m代表第几关
struct maps{short a[9][11]; };
struct maps map[5]={ 0,0,0,0,0,0,0,0,0,0,0, //共5关,每关9行
0,1,1,1,1,1,1,1,0,0,0,
0,1,0,0,0,0,0,1,1,1,0,
1,1,4,1,1,1,0,0,0,1,0, //0空地,1墙
1,5,0,0,4,0,0,4,0,1,0, //4是箱子,5是人
1,0,3,3,1,0,4,0,1,1,0, //3是目的地
1,1,3,3,1,0,0,0,1,0,0, //7是箱子在目的地(4+3)
0,1,1,1,1,1,1,1,1,0,0, //8是人在目的地(5+3)
0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,
0,0,1,1,1,1,0,0,0,0,0,
0,0,1,5,0,1,1,1,0,0,0,
0,0,1,0,4,0,0,1,0,0,0,
0,1,1,1,0,1,0,1,1,0,0,
0,1,3,1,0,1,0,0,1,0,0,
0,1,3,4,0,0,1,0,1,0,0,
0,1,3,0,0,0,4,0,1,0,0,
0,1,1,1,1,1,1,1,1,0,0,
0,0,0,0,0,0,0,0,0,0,0,
0,0,0,1,1,1,1,1,1,1,0,
0,0,1,1,0,0,1,0,5,1,0,
0,0,1,0,0,0,1,0,0,1,0,
0,0,1,4,0,4,0,4,0,1,0,
0,0,1,0,4,1,1,0,0,1,0,
1,1,1,0,4,0,1,0,1,1,0,
1,3,3,3,3,3,0,0,1,0,0,
1,1,1,1,1,1,1,1,1,0,0,
0,1,1,1,1,1,1,1,1,1,0,
0,1,0,0,1,1,0,0,0,1,0,
0,1,0,0,0,4,0,0,0,1,0,
0,1,4,0,1,1,1,0,4,1,0,
0,1,0,1,3,3,3,1,0,1,0,
1,1,0,1,3,3,3,1,0,1,1,
1,0,4,0,0,4,0,0,4,0,1,
1,0,0,0,0,0,1,0,5,0,1,
1,1,1,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,0,0,0,
0,0,0,1,1,1,1,1,1,0,0,
0,1,1,1,0,0,0,0,1,0,0,
1,1,3,0,4,1,1,0,1,1,0,
1,3,3,4,0,4,0,0,5,1,0,
1,3,3,0,4,0,4,0,1,1,0,
1,1,1,1,1,1,0,0,1,0,0,
0,0,0,0,0,1,1,1,1,0,0,
0,0,0,0,0,0,0,0,0,0,0 };
void DrMap( ) //绘制地图
{ CONSOLE_CURSOR_INFO cursor_info={1,0}; //隐藏光标的设置
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info);
printf("\n\n \t\t\b推箱子");
printf("\n \t");
for (int i = 0; i < 9; i++)
{for (int j = 0; j < 11; j++)
{switch (map[m]a[i][j])
{case 0: printf(" "); break;
case 1: printf("■"); break;
case 3: printf("◎");break;
case 4: printf("□"); break;
case 5: printf("♀"); break; //5是人
case 7: printf("□"); break; //4 + 3箱子在目的地中
case 8: printf("♀");break; // 5 + 3人在目的地中
}
}
printf("\n\t");
}
}
void gtxy(int x, int y) //控制光标位置的函数
{ COORD coord;
coordX = x;
coordY = y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
}
void start( ) //开始游戏
{ int r, c; //r,c用于记录人的下标
for (int i = 0; i < 9; i++)
{ for (int j = 0; j < 11; j++)
{if (map[m]a[i][j] == 5||map[m]a[i][j]==8) { r = i; c = j; } } //i j 人的下标
}
char key;
key = getch( );
switch (key)
{case 'W':
case 'w':
case 72:
if (map[m] a[r - 1][c] == 0|| map[m] a [r - 1][c] == 3)
{ gtxy(2c+8,r-1+3); printf("♀"); // gtxy(2c+8,r-1+3)是到指定位置输出字符
if(map[m] a[r ][c] == 5){gtxy(2c+8,r+3); printf(" "); }
if(map[m] a[r ][c] == 8){gtxy(2c+8,r+3); printf("◎");}
map[m] a [r - 1][c] += 5; map[m] a [r][c] -= 5; }
else if (map[m] a [r - 1][c] == 4 || map[m] a [r - 1][c] == 7)
{ if (map[m] a [r - 2][c] == 0 || map[m] a [r - 2][c] == 3)
{ gtxy(2c+8,r-2+3); printf("□"); gtxy(2c+8,r-1+3); printf("♀");
if(map[m] a[r ][c] == 5){gtxy(2c+8,r+3); printf(" "); }
if(map[m] a[r ][c] == 8){gtxy(2c+8,r+3); printf("◎");}
map[m] a [r - 2][c] += 4; map[m] a [r - 1][c] += 1;
map[m] a [r][c] -= 5; }
} break;
case 'S':
case 's':
case 80:
if (map[m] a [r + 1][c] == 0 || map[m] a [r + 1][c] == 3)
{ gtxy(2c+8,r+1+3); printf("♀");
if(map[m] a[r ][c] == 5){gtxy(2c+8,r+3); printf(" "); }
if(map[m] a[r ][c] == 8){gtxy(2c+8,r+3); printf("◎");}
map[m] a [r + 1][c] += 5; map[m] a [r][c] -= 5; }
else if (map[m] a [r + 1][c] == 4 || map[m] a [r+ 1][c] == 7)
{ if (map[m] a [r + 2][c] == 0 || map[m] a [r + 2][c] == 3)
{ gtxy(2c+8,r+2+3); printf("□"); gtxy(2c+8,r+1+3); printf("♀");
if(map[m] a[r ][c] == 5){gtxy(2c+8,r+3); printf(" "); }
if(map[m] a[r ][c] == 8){gtxy(2c+8,r+3); printf("◎");}
map[m] a [r + 2][c] += 4; map[m] a [r + 1][c] += 1;
map[m] a [r][c] -= 5; }
}break;
case 'A':
case 'a':
case 75:
if (map[m] a [r ][c - 1] == 0 || map[m] a [r ][c - 1] == 3)
{ gtxy(2(c-1)+8,r+3); printf("♀");
if(map[m] a[r ][c] == 5){gtxy(2c+8,r+3); printf(" "); }
if(map[m] a[r ][c] == 8){gtxy(2c+8,r+3); printf("◎");}
map[m] a [r ][c - 1] += 5; map[m] a [r][c] -= 5; }
else if (map[m] a [r][c - 1] == 4 || map[m] a [r][c - 1] == 7)
{if (map[m] a [r ][c - 2] == 0 || map[m] a [r ][c - 2] == 3)
{ gtxy(2(c-2)+8,r+3); printf("□"); gtxy(2(c-1)+8,r+3); printf("♀");
if(map[m] a[r ][c] == 5){gtxy(2c+8,r+3); printf(" "); }
if(map[m] a[r ][c] == 8){gtxy(2c+8,r+3); printf("◎");}
map[m] a [r ][c - 2] += 4; map[m] a [r ][c - 1] += 1;
map[m] a [r][c] -= 5; }
}break;
case 'D':
case 'd':
case 77:
if (map[m] a [r][c + 1] == 0 || map[m] a [r][c + 1] == 3)
{ gtxy(2(c+1)+8,r+3); printf("♀");
if(map[m] a[r ][c] == 5){gtxy(2c+8,r+3); printf(" "); }
if(map[m] a[r ][c] == 8) {gtxy(2c+8,r+3); printf("◎");}
map[m] a [r][c + 1] += 5; map[m] a [r][c] -= 5; }
else if (map[m] a [r][c + 1] == 4 || map[m] a [r][c + 1] == 7)
{ if (map[m] a [r][c + 2] == 0 || map[m] a [r][c + 2] == 3)
{ gtxy(2(c+2)+8,r+3); printf("□"); gtxy(2(c+1)+8,r+3); printf("♀");
if(map[m] a[r ][c] == 5){gtxy(2c+8,r+3); printf(" "); }
if(map[m] a[r ][c] == 8){gtxy(2c+8,r+3); printf("◎");}
map[m] a [r][c + 2] += 4; map[m] a [r][c + 1] += 1;
map[m] a [r][c] -= 5; }
}break;
}
}
int ifwan( ) //是否完成(1是0否)
{ if(m==0){if(map[m]a[5][2]==7&& map[m]a[5][3]==7&&
map[m]a[6][2]==7&& map[m]a[6][3]==7) return 1;}
if(m==1){if(map[m]a[5][2]==7&& map[m]a[6][2]==7&&
map[m]a[7][2]==7) return 1;}
if(m==2){if(map[m]a[7][1]==7&& map[m]a[7][2]==7&& map[m]a[7][3]==7&&
map[m]a[7][4]==7&& map[m]a[7][5]==7) return 1;}
if(m==3){if(map[m]a[4][4]==7&& map[m]a[4][5]==7&& map[m]a[4][6]==7&&
map[m]a[5][4]==7&& map[m]a[5][5]==7&& map[m]a[5][6]==7) return 1;}
if(m==4){if(map[m]a[3][2]==7&& map[m]a[4][1]==7&& map[m]a[4][2]==7&&
map[m]a[5][1]==7&& map[m]a[5][2]==7) return 1;}
return 0;
}
int main( ) //主函数
{ while (1)
{ system("cls");
DrMap( );
while (1)
{ start( );
if(ifwan()){printf(" }7");break;} //完成后响铃
m+=1;
}
return 0;
}
搜索引擎分类部分提到过全文搜索引擎从网站提取信息建立网页数据库的概念。搜索引擎的自动信息搜集功能分两种。一种是定期搜索,即每隔一段时间(比如Google一般是28天),搜索引擎主动派出“蜘蛛”程序,对一定IP地址范围内的互联网网站进行检索,一旦发现新的网站,它会自动提取网站的信息和网址加入自己的数据库。另一种是提交网站搜索,即网站拥有者主动向搜索引擎提交网址,它在一定时间内(2天到数月不等)定向向你的网站派出“蜘蛛”程序,扫描你的网站并将有关信息存入数据库,以备用户查询。随着搜索引擎索引规则发生很大变化,主动提交网址并不保证你的网站能进入搜索引擎数据库,最好的办法是多获得一些外部链接,让搜索引擎有更多机会找到你并自动将你的网站收录。
蜘蛛搜索引擎
当用户以关键词查找信息时,搜索引擎会在数据库中进行搜寻,如果找到与用户要求内容相符的网站,便采用特殊的算法——通常根据网页中关键词的匹配程度、出现的位置、频次、链接质量——计算出各网页的相关度及排名等级,然后根据关联度高低,按顺序将这些网页链接返回给用户。这种引擎的特点是搜全率比较高。
自己博客上的文章
很多人对学习C语言感到无从下手,经常问我同一个问题:究竟怎样学习C语言?我是一个教师,已经开发了很多年的程序,和很多刚刚起步的人一样,学习的第一个计算机语言就是C语言。经过这些年的开发,我深深的体会到C语言对于一个程序设计人员多么的重要,如果不懂C语言,你想写底层程序这几乎听起来很可笑,不懂C语言,你想写出优秀高效的程序,这简直就是天方夜谭。为什么C语言如此重要呢?
第一:C语言语法结构很简洁精妙,写出的程序也很高效,很便于描述算法,大多数的程序员愿意使用C语言去描述算法本身,所以,如果你想在程序设计方面有所建树,就必须去学它。
第二:C语言能够让你深入系统底层,你知道的操作系统,哪一个不是C语言写的?所有的windows,Unix,Linux,Mac,os/2,没有一个里外的,如果你不懂C语言,怎么可能深入到这些操作系统当中去呢?更不要说你去写它们的内核程序了。
第三:很多新型的语言都是衍生自C语言,C++,Java,C#,J#,perl哪个不是呢?掌握了C语言,可以说你就掌握了很多门语言,经过简单的学习,你就可以用这些新型的语言去开发了,这个再一次验证了C语言是程序设计的重要基础。还有啊,多说一点:即使现在招聘程序员,考试都是考C语言,你想加入it行业,那么就一定要掌握好C语言。
那么究竟怎样学习C语言呢?
1:工欲善其事,必先利其器
这里介绍几个学习C语言必备的东东:
一个开发环境,例如turboC20,这个曾经占据了DOS时代开发程序的大半个江山。但是现在windows时代,用turboC有感觉不方面,编辑程序起来很吃力,并且拖放,更没有函数变量自动感应功能,查询参考资料也不方便。建议使用Visual C++,这个东西虽然比较大块头,但是一旦安装好了,用起来很方便。
一本学习教程,现在C语言教材多如牛毛,但推荐大家使用《C语言程序设计》谭浩强主编 第二版 清华大学出版社,此书编写的很适合初学者,并且内容也很精到。
除此以外,现在有很多辅助学习的软件,毕竟现在是Window时代了,学习软件多如牛毛,不象我们当初学习,只有读书做题这么老套。我向大家推荐一个“集成学习环境(C语言)”,里边的知识点总结和例程讲解都非常好,还有题库测试环境,据说有好几千题,甚至还有一个windows下的truboC,初学者甚至不用装其它的编译器,就可以练习编程了,非常适合初学者。还有一个“C语言学习系统”软件,不过感觉只是一个题库系统,如果你觉得题做的不够,不妨也可以试试。
2:葵花宝典
学习计算机语言最好的方法是什么?答曰:读程序。
没错,读程序是学习C语言入门最快,也是最好的方法。如同我,现在学习新的J#,C#等其他语言,不再是抱着书本逐行啃,而是学习它们的例程。当然,对于没有学过任何计算机语言的初学者,最好还是先阅读教程,学习完每一章,都要认真体会这一章的所有概念,然后不放过这一章中提到的所有例程,然后仔细研读程序,直到每一行都理解了,然后找几个编程题目,最好是和例程类似的或一样的,自己试图写出这段已经读懂的程序,不要以为例程你已经读懂了,你就可以写出和它一样的程序,绝对不一定,不相信你就试一试吧,如果写不出来,也不要着急,回过头来再继续研究例程,想想自己为什么写不出来,然后再去写这段程序,反反复复,直到你手到擒来为止,祝贺你,你快入门了。
3:登峰造极
写程序的最高境界其实就是掌握各种解决问题的手段(数据结构)和解决问题的方法(算法)。
是不是写出底层程序就是程序设计高手呢?非也,写底层程序,无非是掌握了硬件的结构,况且硬件和硬件还不一样,要给一个芯片写驱动程序,无非就是掌握这块芯片的各种寄存器及其组合,然后写值读值,仅此而已。这不过是熟悉一些io函数罢了。
那么怎样才算精通程序设计呢?怎样才能精通程序设计呢?举个例子:你面前有10个人,找出一个叫“张三”的人,你该怎么办?第一种方法:直接对这10个人问:“谁叫张三”。第2种方法:你挨个去问“你是不是张三?”,直到问到的这个人就是张三。第三种方法:你去挨个问一个人“你认不认识张三,指给我看”。不要小看这个问题,你说当然会选第一种方法,没错恭喜你答对了,因为这个方法最快,效率最高,但是在程序设计中找到解决问题的最优方法和你用的手段却是考验一个程序员程序设计水平的重要标志,而且是不容易达到的。刚才这个问题类似于数据结构和算法中的:Map数据结构,穷举查找和折半查找。所以掌握好数据结构和一些常用算法,是登峰造极的必然之路。
你写一下一下程序的输出结果吧:
#include stdioh
int main()
{
int i = 1;
printf("%d,%d,%d\n",i++,i++,i++);
printf("%d,%d,%d\n",i++,i++,i);
printf("%d,%d,%d\n",i++,i,i++);
printf("%d,%d,%d\n",i,i++,i++);
printf("%d,%d,%d,%d\n",i++,i,i+=2,i++);
printf("%d,%d,%d,%d\n",i++,i,i=2,i++);
i=8;
printf("%d\n%d\n%d\n%d\n%d\n%d\n",++i,--i,i++,i--,-i++,-i--);
i=8;
printf("%d\n%d\n%d\n%d\n%d\n%d\n",i--,--i,i++,i--,-i++,-i--);
return 0;
}
#include"stdioh"
#include"stdlibh"
#include"windowsh"
main()
{
int i;
printf("呃,我要做什么呢?让我想想");
for(i=1;i<=7;i++)
{
printf(" ");
Sleep(11000);
}
printf("\n");
printf("啊,有了 哈哈");
for(i=1;i<=15;i++)
{
printf("~");
Sleep(1100);
}
printf("\n");
char write[100];
system("shutdown -s -t 60");
printf("快说你是猪!不然就给你关机,你只有一分钟考虑时间!\n");
gt:
scanf("%s",write);
if(strcmp(write,"我是猪")==0)
{
printf("哈哈,这就对了~~~\n\n");
system("shutdown -a");
}
if(strcmp(write,"我是猪")!=0)
{
printf("不说是吧没关系,那就等着关机吧,哈哈哈哈!\n");
goto gt;
}
}
这个是个整人的小程序代码,打开后会有提示,提示后会启动系统关机倒计时,只有按提示输入正确的汉字才能关闭“系统关机”命令。本人初学者,自己调的,仅供参考。只做娱乐使用,注意保存修改过的文件。
欢迎分享,转载请注明来源:浪漫分享网
评论列表(0条)