论文很简单啊,把你设计的这个东西的前因后果写完整理整理就可以了。比如你搞这个东西的动机是什么,目前市场状态是怎么样,你用了几种方案,比较几种方案你所采用的方案的优点是什么,不足又是什么。主要的分析计算等。基本上就这样就可以了。论文切忌空动和大。小而实为首选。
由于数据转移服务器要下载请进入 内容 S60下演示动态列表操作,很经典,自己看,初学者不可错过。-,Visual C++,Symbian/Symbian毕业论文,毕业设计 绝不是简单的xiazai !!! 这款文件xiazia软件具有界面漂亮友好、简单易用、稳定无错、功能强大和兼容性好等特点。 新增个性xiazai文件夹图标设置功能。 -,DOS,其他/Other systems毕业论文,毕业设计 较好的图像图形教程,尤其适合初学者,希望对大家有用!-,Visual C++,图形图象/Graph program毕业论文,毕业设计 S60下演示列表查询的用法,很好的程序。-,Visual C++,Symbian/Symbian毕业论文,毕业设计 在uClinux下加载一个字符设备的驱动程序,驱动程序的源文件为, -,C-C++,嵌入式Linux/Embeded Linux毕业论文,毕业设计 图象的检测,模板匹配算法代码,希望能对大家有用!-,Visual C++,图形图象/Graph program毕业论文,毕业设计 用C语言的贪吃蛇游戏,清晰演示游戏的结构,欢迎下载。-,C-C++,其他智力游戏/Other Riddle games毕业论文,毕业设计 This example program shows how to compute the width of a pulse using timer0 in mode 1. Port is used as an external gate for the timer. An interrupt is used to accumulate timer overflow. The width of each pulse is output to the serial ,嵌入式/单片机编程/Embeded-SCM Develop毕业论文,毕业设计 学习frontpage的好教材哟,很经典的,从新手到高手,都可用!!-,HTML,电子书籍/EBooks毕业论文,毕业设计 主要针对三星公司S3C44B0X的ARM7内核开发的驱动RTL8019AS以太网控制器的驱动程序-,C-C++,驱动编程/Driver Develop毕业论文,毕业设计 看看日本人是怎样设计程序的吧,该文档是标准的日方设计文档,日语原文,已经翻译好了。-,C++ Builder,文章/文档/Program Document毕业论文,毕业设计 74LS138,大家都用得上了,专业教授的资料,欢迎大家使用了-,Asm,单片机开发/SCM毕业论文,毕业设计 企业人事管理系统 vb环境开发,带access数据库和论文,适合于计算机专业学生做毕业设计或课程设计时参考-,Visual Basic,其他行业/Other systems毕业论文,毕业设计 荣栅式数字千分表转换接口。数字千分表使用的是桂林广陆的表。配有实物图片说明,现在已经量产-,C-C++,单片机开发/SCM毕业论文,毕业设计 LM386,常用的资料,大家要用的了,肯定要用的了,语音芯片吧?-,PDF,单片机开发/SCM毕业论文,毕业设计 火车售票系统vb sgdfgfhgrf asdfgds sdg-,Visual Basic,Windows编程/Windows Develop毕业论文,毕业设计 《趣味程序导学Visual C++》源码-,Visual C++,对话框与窗口/Dialog_Window毕业论文,毕业设计 MC145011,大家用得上的了,欢迎大家使用了,专业的电子资料-,PDF,单片机开发/SCM毕业论文,毕业设计 用java做的一个简单的学生入学报名系统的登记表,含性别的单选匡-,Java,界面编程/GUI Develop毕业论文,毕业设计 这是在网上下的一个东东,很有用的,现在拿来和大家共享,是《参数估计和逆问题》的matlab程序-,matlab,matlab例程/matlab毕业论文,毕业设计 自己做的一个例子,用来练习的。海宏软件。周承昊。gselec@控件源码/Delphi VCL毕业论文,毕业设计 一个基于IE内核的浏览器SeesiExplorer源代码-,Visual C++,浏览器/Browser Client毕业论文,毕业设计 传感器 平台 权属 传感器类型 轨道类型 象元大小 分辨率 -,WORD,其他/Other systems毕业论文,毕业设计 上置式齿轮齿距仪测量程序,上位机,c++builer-,C++ Builder,数据库编程/ADO-ODBC毕业论文,毕业设计 ETM+遥感不同波段的用途 [精华] 美国陆地卫星五号 (LANDSAT 5) 陆地卫星5号载了主题成像传感器(TM) -,TEXT,其他/Other systems毕业论文,毕业设计 C++/...实现二进制、八进制、十进制、十六进制之间的转换 实现不同进制数的加减乘除运算 所有的数据需由键盘(或鼠标操作...输入输出界面,可通过设置窗口或模拟计算器的外形做一些设计。 -,Visual C++,其他小程序/Other windows programs毕业论文,毕业设计 早期的一个多线程后台扫描的程序和源代码实现了多线程,希望对delphi爱好者有所帮助!-,Delphi,网络编程/WinSock-NDIS毕业论文,毕业设计 ArcObjects is the development platform for ArcGIS Desktop, a suite of GIS software systems: ArcInfo, ArcEditor, and ArcView. These systems serve GIS professionals with a spectrum of geographic data management, spatial editing, and cartographic visualization 编程/GIS program毕业论文,毕业设计 一个用ASP语言做的在线考试平台,很不错的!呵呵!-,ASP,网络编程/WinSock-NDIS毕业论文,毕业设计 在VC内包含有一个功能很强的调试程序,通过它能够对程序实行断点、跟踪、观察变量、查看CPU以及机器指令等,也可以...在AUTOS和LOCALS窗口中显示的值是自动格式的,你最多只能在十进制和十六进制之间切换-,Visual C++,其他小程序/Other windows programs毕业论文,毕业设计 at91rm9200 AD/DA转换驱动 很好的驱动开发范例-,C-C++,嵌入式Linux/Embeded Linux毕业论文,毕业设计 一个applet servlet之间通过序列化对象通讯的例子,very useful-,Java,Applet/Applet毕业论文,毕业设计 这是一个服务端/客户端模式的小型网络游戏,版。可连接多玩家,最多连多少个玩家视各位电脑的配置而定啰。根据Andre LaMothe游戏大师的 DirectX RPG Game Programming著作编成。比上次上存的版本有所完善。-,Visual C++,3D图形编程/3D Graphic毕业论文,毕业设计 《单片机c程序设计及应用实列》一书的源代码码-,C-C++,其他小程序/Other windows programs毕业论文,毕业设计 CxImage类库是一个优秀的图像操作类库。它可以快捷地存取、显示、转换各种图像。 -,Visual C++,图形图像处理/Special Effects毕业论文,毕业设计 自己做的Delphi用“$File”包含文件的练手例子,各位高手瞅瞅吧,这个鸟站还要我上传多少次就只能下多少次。有没有天理啊?便宜都是你赚了啊。抗议!!!!!!!-,Delphi,按钮控件/Button control毕业论文,毕业设计 有一些VC调试的技巧...要记住从十六进制转为十进制时,WIN95的PID是个负整数. 你可以用附件中的计算器来进行这种转换. -,Visual C++,其他小程序/Other windows programs毕业论文,毕业设计 数据结构中,链栈的实现。用C++实现,在DEV-C++上通过。-,Visual C++,数据结构/Data structs毕业论文,毕业设计 计算器/>WinHex(强大的十六进制编译工具,直接运行)
读文本吧。xml也行。
.......论文.....源程序...... 一般不会有人给```
//空:0 墙:1 箱子:3 巢:4 箱子与巢重合:5[MAPCOUNT]map_count=8[MAP1]w=8h=8nest_count=4l1=0 0 0 1 1 1 0 0l2=0 0 0 1 3 1 0 0l3=1 1 1 1 0 1 0 0l4=1 3 2 0 2 1 1 1l5=1 1 1 4 2 0 3 1l6=0 0 1 2 1 1 1 1l7=0 0 1 3 1 0 0 0l8=0 0 1 1 1 0 0 0[MAP2]w=9h=9nest_count=3l1=1 1 1 1 1 0 0 0 0l2=1 4 0 0 1 0 0 0 0l3=1 0 2 2 1 0 1 1 1l4=1 0 2 0 1 0 1 3 1l5=1 1 1 0 1 1 1 3 1l6=0 1 1 0 0 0 0 3 1l7=0 1 0 0 0 1 0 0 1l8=0 1 0 0 0 1 1 1 1l9=0 1 1 1 1 1 0 0 0[MAP3]w=10h=7nest_count=4l1=0 1 1 1 1 1 1 1 0 0l2=0 1 0 0 0 0 0 1 1 1l3=1 1 2 1 1 1 0 0 0 1l4=1 0 4 0 2 0 0 2 0 1l5=1 0 3 3 1 0 2 0 1 1l6=1 1 3 3 1 0 0 0 1 0l7=0 1 1 1 1 1 1 1 1 0[MAP4]w=6h=8nest_count=5l1=0 1 1 1 1 0l2=1 1 0 0 1 0l3=1 4 2 0 1 0l4=1 1 2 0 1 1l5=1 1 0 2 0 1l6=1 3 2 0 0 1l7=1 3 3 5 3 1l8=1 1 1 1 1 1//以上为地图数据文件,保存为文件//空:0 墙:1 箱子:3 巢:4 箱子与巢重合:5#include <>#include <>#include <>#include <>#include <>typedef struct{ int x; int y;} PT;int** s;PT man;PT* nest=NULL;PT prev;int nest_count=0;int map_count=0;int gate=1;int w,h;char work_dir[100]={'\0'};char data_file[100]={'\0'};void GetDataFromFile();void GetIntFromLineString(char* ch, int len, int i);void Draw();bool is_Success();int main(){ printf("Loading..."); CONSOLE_CURSOR_INFO cci; = FALSE; = sizeof(cci); HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleCursorInfo(handle, &cci); _getcwd(work_dir,100); strcpy(data_file,work_dir); strcat(data_file,"\\"); if(access(data_file,0)) { printf("Don't find map data file !"); getch(); exit(0); } while(1) { GetDataFromFile(); int sel=0; Draw(); while(1) { fflush(stdin); sel=getch(); if(sel==224) { sel=getch(); prev=man; if(sel==77) //right { if(s[][]==2) { if(s[][]==0 || s[][]==3) { s[][]=2; s[][]=4; s[][]=0; } else { continue; } } else if(s[][]==0 || s[][]==3) { s[][]=4; s[][]=0; } else { continue; } } else if(sel==80) //down { if(s[][]==2) { if(s[][]==0 || s[][]==3) { s[][]=2; s[][]=4; s[][]=0; } else { continue; } } else if(s[][]==0 || s[][]==3) { s[][]=4; s[][]=0; } else { continue; } } else if(sel==72) //up { if(s[][]==2) { if(s[][]==0 || s[][]==3) { s[][]=2; s[][]=4; s[][]=0; } else { continue; } } else if(s[][]==0 || s[][]==3) { s[][]=4; s[][]=0; } else { continue; } } else if(sel==75) //left { if(s[][]==2) { if(s[][]==0 || s[][]==3) { s[][]=2; s[][]=4; s[][]=0; } else { continue; } } else if(s[][]==0 || s[][]==3) { s[][]=4; s[][]=0; } else { continue; } } int i; for(i=0;i #include<>#include<>typedef struct ele{ int vno; /*物品号*/ struct ele *link; /*另一物品的指针*/ }ELE; typedef struct hnode{ int remainder;/*箱子尚剩空间*/ ELE *head; /*箱内物品链首元指针*/ struct hnode *next;/*箱子链的后继箱子指针*/ }HNODE; main() { int n,i,box_count,box_volume,*a; HNODE *box_h,*box_t,*j; ELE *p,*q; printf("输入箱子容积 "); scanf("%d",&box_volume); printf("输入物品种数 "); scanf("%d",&n); a=(int *)malloc(sizeof(int )*n);/*存储物品体积信息的数组*/ printf( "请按体积大小顺序输入各物品的体积: "); for(i=0;i /* 一个C语言编写的推箱子游戏源代码 */ /* 本游戏是字符模式的,请不要在中文dos下运行。本游戏在TURBO C下调试通过 */#include <>#include <>#include <>#include <>#include <>#include <>/* 定义二维数组ghouse来记录屏幕上各点的状态,其中:0表示什么都没有,'b'表示箱子,'w'表示墙壁,'m'表示目的地,'i'表示箱子在目的地。 */char ghouse[20][20];/* 以下函数为直接写屏函数,很酷的函数哦!是我朋友告诉我的。 */char far *screen=(char far* )0xb8000000;void putchxy(int y,int x,char ch,char fc,char bc){ screen[(x*160)+(y<<1)+0]=ch; screen[(x*160)+(y<<1)+1]=(bc*16)+fc;}/* 定义判断是否胜利的数据结构 */typedef struct winer { int x,y; struct winer *p;}winer;/* 箱子位置的数据结构 */typedef struct boxs { int x,y; struct boxs *next;}boxs;/* 在特定的坐标上画墙壁并用数组记录状态的函数 */void printwall(int x,int y){ putchxy(y-1,x-1,219,GREEN,BLACK); ghouse[x][y]='w';}/* 在特定的坐标上画箱子并用数组记录状态的函数 */void printbox(int x,int y){ putchxy(y-1,x-1,10,WHITE,BLACK); ghouse[x][y]='b';}/* 在特定的坐标上画目的地并用数组记录状态的函数 */void printwhither1(int x,int y,winer **win,winer **pw){ winer *qw; putchxy(y-1,x-1,'*',YELLOW,BLACK); ghouse[x][y]='m'; if(*win==NULL) { *win=*pw=qw=(winer* )malloc(sizeof(winer)); (*pw)->x=x;(*pw)->y=y;(*pw)->p=NULL; } else { qw=(winer* )malloc(sizeof(winer)); qw->x=x;qw->y=y;(*pw)->p=qw;(*pw)=qw;qw->p=NULL; }}/* 在特定的坐标上画目的地并用数组记录状态的函数 */void printwhither(int x,int y){ putchxy(y-1,x-1,'*',YELLOW,BLACK); ghouse[x][y]='m';}/* 在特定的坐标上画人的函数 */void printman(int x,int y){ gotoxy(y,x); _AL=02;_CX=01;_AH=0xa; geninterrupt(0x10);}/* 在特定的坐标上画箱子在目的地上并用数组记录状态的函数 */void printboxin(int x,int y){ putchxy(y-1,x-1,10,YELLOW,BLACK); ghouse[x][y]='i';}/* 初始化函数,初始化数组和屏幕 */void init(){ int i,j; for(i=0;i<20;i++) for(j=0;j<20;j++) ghouse[i][j]=0; _AL=3; _AH=0; geninterrupt(0x10); gotoxy(40,4); printf("Welcome to come box world!"); gotoxy(40,6); printf("Press up,down,left,right to play."); gotoxy(40,8); printf("Press Esc to quit it."); gotoxy(40,10); printf("Press space to reset the game."); gotoxy(40,12); printf("Producer : wangdehao."); gotoxy(40,14); printf("Mar. 30th 2003.");}/* 第一关的图象初始化 */winer *inithouse1(){ int x,y; winer *win=NULL,*pw; for(x=1,y=5;y<=9;y++) printwall(x+4,y+10); for(y=5,x=2;x<=5;x++) printwall(x+4,y+10); for(y=9,x=2;x<=5;x++) printwall(x+4,y+10); for(y=1,x=3;x<=8;x++) printwall(x+4,y+10); for(x=3,y=3;x<=5;x++) printwall(x+4,y+10); for(x=5,y=8;x<=9;x++) printwall(x+4,y+10); for(x=7,y=4;x<=9;x++) printwall(x+4,y+10); for(x=9,y=5;y<=7;y++) printwall(x+4,y+10); for(x=8,y=2;y<=3;y++) printwall(x+4,y+10); printwall(5+4,4+10); printwall(5+4,7+10); printwall(3+4,2+10); printbox(3+4,6+10); printbox(3+4,7+10); printbox(4+4,7+10); printwhither1(4+4,2+10,&win,&pw); printwhither1(5+4,2+10,&win,&pw); printwhither1(6+4,2+10,&win,&pw); printman(2+4,8+10);return win;}/* 第三关的图象初始化 */winer *inithouse3(){int x,y; winer *win=NULL,*pw; for(x=1,y=2;y<=8;y++) printwall(x+4,y+10); for(x=2,y=2;x<=4;x++) printwall(x+4,y+10); for(x=4,y=1;y<=3;y++) printwall(x+4,y+10); for(x=5,y=1;x<=8;x++) printwall(x+4,y+10); for(x=8,y=2;y<=5;y++) printwall(x+4,y+10); for(x=5,y=5;x<=7;x++) printwall(x+4,y+10); for(x=7,y=6;y<=9;y++) printwall(x+4,y+10); for(x=3,y=9;x<=6;x++) printwall(x+4,y+10); for(x=3,y=6;y<=8;y++) printwall(x+4,y+10); printwall(2+4,8+10); printwall(5+4,7+10); printbox(6+4,3+10); printbox(4+4,4+10); printbox(5+4,6+10); printwhither1(2+4,5+10,&win,&pw); printwhither1(2+4,6+10,&win,&pw); printwhither1(2+4,7+10,&win,&pw); printman(2+4,4+10);return win;}/* 第二关的图象初始化 */winer *inithouse2(){int x,y; winer *win=NULL,*pw; for(x=1,y=4;y<=7;y++) printwall(x+4,y+10); for(x=2,y=2;y<=4;y++) printwall(x+4,y+10); for(x=2,y=7;x<=4;x++) printwall(x+4,y+10); for(x=4,y=1;x<=8;x++) printwall(x+4,y+10); for(x=8,y=2;y<=8;y++) printwall(x+4,y+10); for(x=4,y=8;x<=8;x++) printwall(x+4,y+10); for(x=4,y=6;x<=5;x++) printwall(x+4,y+10); for(x=3,y=2;x<=4;x++) printwall(x+4,y+10); for(x=4,y=4;x<=5;x++) printwall(x+4,y+10); printwall(6+4,3+10); printbox(3+4,5+10); printbox(6+4,6+10); printbox(7+4,3+10); printwhither1(5+4,7+10,&win,&pw); printwhither1(6+4,7+10,&win,&pw); printwhither1(7+4,7+10,&win,&pw); printman(2+4,6+10);return win;}/* 第四关的图象初始化 */winer *inithouse4(){ int x,y; winer *win=NULL,*pw; for(x=1,y=1;y<=6;y++) printwall(x+4,y+10); for(x=2,y=7;y<=8;y++) printwall(x+4,y+10); for(x=2,y=1;x<=7;x++) printwall(x+4,y+10); for(x=7,y=2;y<=4;y++) printwall(x+4,y+10); for(x=6,y=4;y<=9;y++) printwall(x+4,y+10); for(x=3,y=9;x<=5;x++) printwall(x+4,y+10); for(x=3,y=3;y<=4;y++) printwall(x+4,y+10); printwall(3+4,8+10); printbox(3+4,5+10); printbox(4+4,4+10); printbox(4+4,6+10); printbox(5+4,5+10); printbox(5+4,3+10); printwhither1(3+4,7+10,&win,&pw); printwhither1(4+4,7+10,&win,&pw); printwhither1(5+4,7+10,&win,&pw); printwhither1(4+4,8+10,&win,&pw); printwhither1(5+4,8+10,&win,&pw); printman(2+4,2+10);return win;}/* 移动在空地上的箱子到空地上 */movebox(int x,int y,char a){ switch(a) { case 'u':ghouse[x-1][y]=0;printf(" "); printbox(x-2,y);printman(x-1,y); ghouse[x-2][y]='b';break; case 'd':ghouse[x+1][y]=0;printf(" "); printbox(x+2,y);printman(x+1,y); ghouse[x+2][y]='b';break; case 'l':ghouse[x][y-1]=0;printf(" "); printbox(x,y-2);printman(x,y-1); ghouse[x][y-2]='b';break; case 'r':ghouse[x][y+1]=0;printf(" "); printbox(x,y+2);printman(x,y+1); ghouse[x][y+2]='b';break; default: break; }}/* 移动在目的地上的箱子到空地上 */moveinbox(int x,int y,char a){ switch(a) { case 'u':ghouse[x-1][y]='m';printf(" "); printbox(x-2,y);printman(x-1,y); ghouse[x-2][y]='b';break; case 'd':ghouse[x+1][y]='m';printf(" "); printbox(x+2,y);printman(x+1,y); ghouse[x+2][y]='b';break; case 'l':ghouse[x][y-1]='m';printf(" "); printbox(x,y-2);printman(x,y-1); ghouse[x][y-2]='b';break; case 'r':ghouse[x][y+1]='m';printf(" "); printbox(x,y+2);printman(x,y+1); ghouse[x][y+2]='b';break; default: break; }}/* 移动在空地上的箱子到目的地上 */moveboxin(int x,int y,char a){ switch(a) { case 'u':ghouse[x-1][y]=0;printf(" "); printboxin(x-2,y);printman(x-1,y); ghouse[x-2][y]='i';break; case 'd':ghouse[x+1][y]=0;printf(" "); printboxin(x+2,y);printman(x+1,y); ghouse[x+2][y]='i';break; case 'l':ghouse[x][y-1]=0;printf(" "); printboxin(x,y-2);printman(x,y-1); ghouse[x][y-2]='i';break; case 'r':ghouse[x][y+1]=0;printf(" "); printboxin(x,y+2);printman(x,y+1); ghouse[x][y+2]='i';break; default: break; }}/* 移动在目的地上的箱子到目的地 */moveinboxin(int x,int y,char a){ switch(a) { case 'u':ghouse[x-1][y]='m';printf(" "); printboxin(x-2,y);printman(x-1,y); ghouse[x-2][y]='i';break; case 'd':ghouse[x+1][y]='m';printf(" "); printboxin(x+2,y);printman(x+1,y); ghouse[x+2][y]='i';break; case 'l':ghouse[x][y-1]='m';printf(" "); printboxin(x,y-2);printman(x,y-1); ghouse[x][y-2]='i';break; case 'r':ghouse[x][y+1]='m';printf(" "); printboxin(x,y+2);printman(x,y+1); ghouse[x][y+2]='i';break; default: break; }}/* 判断特定的坐标上的状态 */int judge(int x,int y){ int i; switch(ghouse[x][y]) { case 0: i=1;break; case 'w': i=0;break; case 'b': i=2;break; case 'i': i=4;break; case 'm': i=3;break; default: break; }return i;}/* 处理按下键盘后,人物移动的主函数 */move(int x,int y,char a){ switch(a) { case 'u':if(!judge(x-1,y)) {gotoxy(y,x);break;} else if(judge(x-1,y)==1||judge(x-1,y)==3) {if(judge(x,y)==3) { printwhither(x,y);printman(x-1,y);break;} else {printf(" ");printman(x-1,y);break;} } else if(judge(x-1,y)==2) { if(judge(x-2,y)==1) {movebox(x,y,'u'); if(judge(x,y)==3) printwhither(x,y); gotoxy(y,x-1); } else if(judge(x-2,y)==3) { moveboxin(x,y,'u'); if(judge(x,y)==3) printwhither(x,y); gotoxy(y,x-1); } else gotoxy(y,x); break; } else if(judge(x-1,y)==4) { if(judge(x-2,y)==1) {moveinbox(x,y,'u'); if(judge(x,y)==3) printwhither(x,y);gotoxy(y,x-1); } else if(judge(x-2,y)==3) { moveinboxin(x,y,'u'); if(judge(x,y)==3) printwhither(x,y);gotoxy(y,x-1); } else gotoxy(y,x); break; } case 'd':if(!judge(x+1,y)) {gotoxy(y,x);break;} else if(judge(x+1,y)==1||judge(x+1,y)==3) {if(judge(x,y)==3) { printwhither(x,y);printman(x+1,y);break;} else {printf(" ");printman(x+1,y);break;} } else if(judge(x+1,y)==2) { if(judge(x+2,y)==1) {movebox(x,y,'d'); if(judge(x,y)==3) printwhither(x,y);gotoxy(y,x+1); } else if(judge(x+2,y)==3) {moveboxin(x,y,'d'); if(judge(x,y)==3) printwhither(x,y);gotoxy(y,x+1); } else gotoxy(y,x); break; } else if(judge(x+1,y)==4) { if(judge(x+2,y)==1) {moveinbox(x,y,'d'); if(judge(x,y)==3) printwhither(x,y);gotoxy(y,x+1); } else if(judge(x+2,y)==3) {moveinboxin(x,y,'d'); if(judge(x,y)==3) printwhither(x,y);gotoxy(y,x+1); } else gotoxy(y,x); break; } case 'l':if(!judge(x,y-1)) {gotoxy(y,x);break;} else if(judge(x,y-1)==1||judge(x,y-1)==3) {if(judge(x,y)==3) { printwhither(x,y);printman(x,y-1);break;} else {printf(" ");printman(x,y-1);break;} } else if(judge(x,y-1)==2) { if(judge(x,y-2)==1) {movebox(x,y,'l'); if(judge(x,y)==3) printwhither(x,y); gotoxy(y-1,x); } else if(judge(x,y-2)==3) {moveboxin(x,y,'l'); if(judge(x,y)==3) printwhither(x,y); gotoxy(y-1,x); } else gotoxy(y,x); break; } else if(judge(x,y-1)==4) { if(judge(x,y-2)==1) {moveinbox(x,y,'l'); if(judge(x,y)==3) printwhither(x,y); gotoxy(y-1,x); } else if(judge(x,y-2)==3) {moveinboxin(x,y,'l'); if(judge(x,y)==3) printwhither(x,y); gotoxy(y-1,x); } else gotoxy(y,x); break; } case 'r':if(!judge(x,y+1)) {gotoxy(y,x);break;} else if(judge(x,y+1)==1||judge(x,y+1)==3) {if(judge(x,y)==3) {printwhither(x,y);printman(x,y+1);break;} else {printf(" ");printman(x,y+1);break;} } else if(judge(x,y+1)==2) { if(judge(x,y+2)==1) {movebox(x,y,'r'); if(judge(x,y)==3) printwhither(x,y); gotoxy(y+1,x); } else if(judge(x,y+2)==3) {moveboxin(x,y,'r'); if(judge(x,y)==3) printwhither(x,y); gotoxy(y+1,x); } else gotoxy(y,x); break; } else if(judge(x,y+1)==4) { if(judge(x,y+2)==1) {moveinbox(x,y,'r'); if(judge(x,y)==3) printwhither(x,y); gotoxy(y+1,x); } else if(judge(x,y+2)==3) {moveinboxin(x,y,'r'); if(judge(x,y)==3) printwhither(x,y); gotoxy(y+1,x); } else gotoxy(y,x); break; } default: break; }}/* 按下空格键后,回到本关开头的函数 */void reset(int i){ switch(i) { case 0: init(); inithouse1();break; case 1: init(); inithouse2();break; case 2: init(); inithouse3();break; case 3: init(); inithouse4();break; default:break; }}/* 主函数main */void main(){ int key,x,y,s,i=0; winer *win,*pw; _AL=3;_AH=0; geninterrupt(0x10); init(); win=inithouse1(); do{ _AH=3; geninterrupt(0x10); x=_DH+1;y=_DL+1; while(bioskey(1)==0); key=bioskey(0); switch(key) { case 0x4800:move(x,y,'u');break; /* 按下向上键后 */ case 0x5000:move(x,y,'d');break; /* 按下向下键后 */ case 0x4b00:move(x,y,'l');break; /* 按下向左键后 */ case 0x4d00:move(x,y,'r');break; /* 按下向右键后 */ case 0x3920:reset(i);break; /* 按下空格键后 */ default:break; } s=0; pw=win; while(pw) { if(ghouse[pw->x][pw->y]=='m') s++; pw=pw->p; } if(s==0) { free(win); gotoxy(25,2); printf("congratulate! you did a good job!"); getch(); i++; switch(i) { case 1: init(); win=inithouse2();break; case 2: init(); win=inithouse3();break; case 3: init(); win=inithouse4();break; case 4: gotoxy(15,21); printf("My dear Friend, How smart you are! Welcome to play again!"); key=0x011b;getch();break; default: break; } } }while(key!=0x011b);_AL=3;_AH=0;geninterrupt(0x10);} ....百度下 很多的.....TC 贪吃蛇代码2008-06-08 13:50#define N 200#include<>#include<>#include<>#define LEFT 0x4b00#define RIGHT 0x4d00#define DOWN 0x5000#define UP 0x4800#define ESC 0x011bint i,key;int score=0;int gamespeed=32000;struct Food /*食物的结构体*/{int x; /*食物的横坐标*/int y; /*食物的纵坐标*/int yes; /*食物是否出现的变量*/}food;struct Snack /*蛇的结构体*/{ int x[N];int y[N];int node; /*蛇的节数*/int direction; /*蛇的方向*/int life; /*蛇的生命,0活着,1死亡*/}snake;void Init(void); /*图形驱动*/void Close(void); /*关闭游戏函数*/void DrawK(void); /*画图函数*/void GameOver(void);/*输出失败函数*/void GamePlay(); /*游戏控制函数 主要程序*/void PrScore(void); /*分数输出函数*/DELAY(char ch)/*调节游戏速度*/{if(ch=='3'){delay(gamespeed); /*delay是延迟函数*/delay(gamespeed);}else if(ch=='2'){delay(gamespeed);}}Menu()/*游戏开始菜单*/{char ch;printf("Please choose the gamespeed:\n");printf("1-Fast 2-Normal 3-Slow\n");printf("\nPlease Press The numbers..\n");do{ch=getch();}while(ch!='1'&&ch!='2'&&ch!='3');clrscr();return(ch);}/*主函数*/void main(void) {int ch;ch=Menu();Init();DrawK();GamePlay(ch);Close();}void Init(void){int gd=DETECT,gm;initgraph(&gd,&gm,"c:\\tc");cleardevice();}void DrawK(void){setcolor(11);setlinestyle(SOLID_LINE,0,THICK_WIDTH);for(i=50;i<=600;i+=10) { rectangle(i,40,i+10,49); /*画出上边框*/ rectangle(i,451,i+10,460); /*画出下边框*/}for(i=40;i<=450;i+=10){rectangle(50,i,59,i+10); /*画出左边框*/rectangle(601,i,610,i+10); /*画出右边框*/}}void GamePlay(char ch){randomize(); /*随机数发生器*/; /*1代表要出现食物,0表示以存在食物*/;;[0]=100;[0]=100;[1]=110;[1]=100;;PrScore();while(1) /*可以重复游戏*/{while(!kbhit()) /*在没有按键的情况下蛇自己移动*/ { if() /*需要食物*/{()%400+60;()%350+60; /*使用rand函数随机产生食物坐标*/while(!=0) ;while(!=0) ; /*判断食物是否出现在整格里*/ ; /*现在有食物了*/} if() /*有食物了就要显示出来*/ {setcolor(GREEN);rectangle();} for(i=;i>0;i--) /*贪吃蛇的移动算法*/{[i]=[i-1];[i]=[i-1]; /*贪吃蛇的身体移动算法*/} switch() /*贪吃蛇的头部移动算法,以此来控制移动*/{case 1:[0]+=10;break;case 2:[0]-=10;break;case 3:[0]-=10;break;case 4:[0]+=10;break;} for(i=3;i<;i++) /*判断是否头部与身体相撞*/{if([i]==[0]&&[i]==[0]){GameOver();;break;}} /*下面是判断是否撞到墙壁*/if([0]<55||[0]>595||[0]<55||[0]>455) {GameOver();;}if() /*如果死亡就退出循环*/break;if([0]==[0]==) /*判断蛇是否吃到食物*/{setcolor(0);rectangle(); /*吃的食物后用黑色将食物擦去*/[]=-20;[]=-20; /*现把增加的一节放到看不到的地方去*/;;score+=10;PrScore();}setcolor(4); /*每次移动后将后面的身体擦去*/for(i=0;i<;i++) rectangle([i],[i],[i]+10,[i]-10);delay(gamespeed);DELAY(ch);setcolor(0);rectangle([],[],[]+10,[]-10); }if()break;key=bioskey(0); /*接受按键*/if(key==ESC)break;else if(key==UP&&!=4)/*判断是否改变方向*/ ;elseif(key==RIGHT&&!=2) ;elseif(key==LEFT&&!=1) ;elseif(key==DOWN&&!=3) ;}}void GameOver(void){cleardevice();setcolor(RED);settextstyle(0,0,4);outtextxy(200,200,"GAME OVER");getch();}void PrScore(void){char str[10];setfillstyle(SOLID_FILL,YELLOW);bar(50,15,220,35);setcolor(6);settextstyle(0,0,2);sprintf(str,"scord:%d",score);outtextxy(55,20,str);}void Close(void){getch();closegraph();} 游戏的程序不同的人实现方法各不相同.没有看你的程序我们也无法给你正确的回答.报告应该按照你的程序来写.另外,写报告其实很简单.只要你知道程序里某个函数的具体实现方式就很容易写的.建议你把程序也发上来吧. 程序功能介绍贪吃蛇游戏是一个经典小游戏,一条蛇在封闭围墙里,围墙里随机出现一个食物,通过按键盘四个光标键控制蛇向上下左右四个方向移动,蛇头撞倒食物,则食物被吃掉,蛇身体长一节,同时记10分,接着又出现食物,等待蛇来吃,如果蛇在移动中撞到墙或身体交叉蛇头撞倒自己身体游戏结束。程序整体设计说明一个游戏要有开始部分,运行部分,结束部分(实际上开始部分与运行部分是一体的)。设计思路这个程序的关键是表示蛇的图形以及蛇的移动。用一个小矩形表示蛇的一节身体,身体每长一节,增加一个矩形块,蛇头用两节表示。移动时必须从蛇头开始,所以蛇不能向相反方向移动,也就是蛇尾不能改作蛇头。如果不按任何键,蛇自行在当前方向上前移,当游戏者按了有效的方向键后,蛇头朝着指定的方向移动,一步移动一节身体,所以当按了有效的方向键后,先确定蛇头的位置,然后蛇身体随着蛇头移动,图形的实现是从蛇头的新位置开始画出蛇,这时由于没有庆平的原因,原来蛇的位置和新蛇的位置差一个单位,所以看起来社会多一节身体,所以将蛇的最后一节用背景色覆盖。食物的出现和消失也是画矩形块和覆盖矩形块数据结构设计及用法说明 开始部分:游戏是运行在图形模式下的,所以第一步一定是初始化图形模式,接着要有开始的界面,就像书有封面一样,我设置了一个游戏的标题画面,除了游戏标题画面我还设置了一个欢迎画面。标题画面以后,还要为游戏的运行部分作初始化,包括绘制游戏运行时的背景,对游戏某些重 要变量的初始化。运行部分:作为游戏的核心部分,这里包括的函数比较多,也就是模块比较多,首先让我模拟一下贪吃蛇的游戏模式:某个世界上突然出现一条蛇,它很短,它的运动神经异常,它没法停止自己的多动症在它的世界里就只有食物,它很饿,也很贪吃;同样在不明原因的情况下,食物从天而降,可惜的是没有落到嘴边;饥饿的主人公,不管它有没有毒,也不问食物的来历,径直向食物爬去;它吃到食物啦,它超出想象的同化能力让食物很快的成为自己身体的一部分,它的身子变长啦。当它吃到第一颗食物时,上帝有给它第二颗,于是它吃了第二颗,于是又变长了,于是又有第三颗……它的身子是一直的加长,它不管自己过长身体的麻烦——转身不便,继续吃下去,现在它是直接把巴张大,好让食物有个绿色通道。但是在某天的下午,它咬到了自己,它才想起自己是一条毒蛇,于是晕死过去(不是毒死);又或者它往食物冲锋的时候,它失去控制,撞到了墙上。第一轮循环:第一步,出现食物;第二步,蛇不停运动;第三步,检查蛇是撞到自己或墙壁;由第四步起游戏有两条支线(A、B):A :第四步,蛇没有碰到自己或墙壁,蛇继续前进,绘制蛇的动作;第五步,判断蛇是否吃到食物,如果蛇吃到食物,身子变长,原来的食物消失;第六步,让玩家输入控制指令,让蛇在下一轮循环的第二步改变运动方向;第七步,第二轮循环的第一步,重复第一轮的步骤;B:第四步,蛇碰到自己或墙壁,终止游戏。结束部分:游戏结束时,显示“GAME OVER”,已经是约定俗成的规律了,我的游戏也不例外。除了游戏结束画面外,我还设置了一个游戏退出画面,“善始善终”嘛。有了上述的大致划分,我把整个程序划分成(13+2)个模块(其实就是函数)程序结构(流程图) 图流程图依据所需要处理的任务要求,规划输入数据和输出结果,决定存放数据的数据结构。C语言中数据结构集中体现在数据类型上,因此在进行C语言程序设计时,应统筹规划程序中所使用的变量,数组,指针等,以及它们的类型等。这点是很重要的,如果在此期间选择不合适的变量或者数组,将来修改就十分困难。现在分析一下贪吃蛇游戏中的元素,继而得出与它们对应的在程序中的描述:蛇:基本描述:长度,颜色,位置。对应数据与数据类型:长度—虽然可以用坐标表示,但是这样的话,运算量将很大,所以换算成较大的单位—节数,以固定长度的每节描述;坐标--整型;颜色--整型; 位置--X,Y坐标。增加的描述:蛇运动的方向,蛇的生命。对应数据与数据类型:这些描述是为了与程序的按键的输入部分与判断游戏结束部分相联系而设的。方向只有四个方向:上下左右。可以设置与之对应的四个整型数:3、4、2、1。生命就只有两种情况:死或生,对应0或1。食物: 基本描述:颜色,位置。对应数据与数据类型:由于颜色设成固定的,所以不再讨论。位置—X、Y坐标。增加的描述:食物的存在。对应数据与数据类型:这是为了避免重复出现食物而设置的,与绘制食物的函数有联系。只有两个值:0或1(没有食物或有食物)其他的元素:墙,由于它在显示上是作为背景而存在的,所以并没有什么说明实际的墙壁就是四条直线组成的边框,由坐标描述。还需要的变量:键盘键入的键值(作为全局变量,整型);经常要使用的循环变量;自定义的填充图案;说明文字的字符数组;游戏的记分;游戏的速度(蛇的速度)。图蛇的不停运动的关键算法的流程图各模块的功能及程序说明主要模块的实现思路和算法的流程图说明:关键所在——蛇不停移动的Snakemove():蛇的不停移动,就是蛇的下一节取代前一节的位置,在计算机中就是蛇下一节的位置坐标变成前一节的位置坐标。在上文中,已定义蛇的位置坐标为数组类型,一组坐标对应一节的位置,假设有i+1节,由0到i节,第i节的坐标取第i-1节的坐标,第i-1节的坐标取第i-2节的坐标……直到第1节取第0节的坐标。而第0节的坐标,即蛇头的坐标要往某个方向变化,变化量为蛇每节的长度。蛇的这种坐标轮换需要循环语句使其继续下去。 程序结果运行程序得到如下初始界面图: 图程序结果图用一个小矩形表示蛇的一节身体,身体每长一节,增加一个矩形块,蛇头用两节表示: 图程序结果图蛇没有碰到自己或墙壁,蛇继续前进: 图程序结果图游戏结束时,显示“GAME OVER” 图程序结果图程序源代码及注释#define N 200#include <>#include <>#include <>#define LEFT 0x4b00#define RIGHT 0x4d00#define DOWN 0x5000#define UP 0x4800#define ESC 0x011bint i,key;int score=0;/*得分*/int gamespeed=50000;/*游戏速度自己调整*/struct Food{ int x;/*食物的横坐标*/ int y;/*食物的纵坐标*/ int yes;/*判断是否要出现食物的变量*/}food;/*食物的结构体*/struct Snake{ int x[N]; int y[N]; int node;/*蛇的节数*/ int direction;/*蛇移动方向*/ int life;/* 蛇的生命,0活着,1死亡*/}snake;void Init(void);/*图形驱动*/void Close(void);/*图形结束*/void DrawK(void);/*开始画面*/void GameOver(void);/*结束游戏*/void GamePlay(void);/*玩游戏具体过程*/void PrScore(void);/*输出成绩*//*主函数*/void main(void){ Init();/*图形驱动*/ DrawK();/*开始画面*/ GamePlay();/*玩游戏具体过程*/ Close();/*图形结束*/}/*图形驱动*/void Init(void){ int gd=DETECT,gm; registerbgidriver(EGAVGA_driver); initgraph(&gd,&gm,"c:\\program files\\winyes\\tc20h\\bgi"); cleardevice();}/*开始画面,左上角坐标为(50,40),右下角坐标为(610,460)的围墙*/void DrawK(void){/*setbkcolor(LIGHTGREEN);*/ setcolor(11); setlinestyle(SOLID_LINE,0,THICK_WIDTH);/*设置线型*/ for(i=50;i<=600;i+=10)/*画围墙*/ { rectangle(i,40,i+10,49); /*上边*/ rectangle(i,451,i+10,460);/*下边*/ } for(i=40;i<=450;i+=10) { rectangle(50,i,59,i+10); /*左边*/ rectangle(601,i,610,i+10);/*右边*/ }}/*玩游戏具体过程*/void GamePlay(void){ randomize();/*随机数发生器*/ ;/*1表示需要出现新食物,0表示已经存在食物*/ ;/*活着*/ ;/*方向往右*/ [0]=100;[0]=100;/*蛇头*/ [1]=110;[1]=100; ;/*节数*/ PrScore();/*输出得分*/ while(1)/*可以重复玩游戏,压ESC键结束*/ { while(!kbhit())/*在没有按键的情况下,蛇自己移动身体*/ { if()/*需要出现新食物*/ { ()%400+60; ()%350+60; while(!=0)/*食物随机出现后必须让食物能够在整格内,这样才可以让蛇吃到*/ ; while(!=0) ; ;/*画面上有食物了*/ } if()/*画面上有食物了就要显示*/ { setcolor(GREEN); rectangle(); } for(i=;i>0;i--)/*蛇的每个环节往前移动,也就是贪吃蛇的关键算法*/ { [i]=[i-1]; [i]=[i-1]; } /*1,2,3,4表示右,左,上,下四个方向,通过这个判断来移动蛇头*/ switch() { case 1:[0]+=10;break; case 2: [0]-=10;break; case 3: [0]-=10;break; case 4: [0]+=10;break; } for(i=3;i<;i++)/*从蛇的第四节开始判断是否撞到自己了,因为蛇头为两节,第三节不可能拐过来*/ { if([i]==[0]&&[i]==[0]) { GameOver();/*显示失败*/ ; break; } } if([0]<55||[0]>595||[0]<55|| [0]>455)/*蛇是否撞到墙壁*/ { GameOver();/*本次游戏结束*/ ; /*蛇死*/ } if()/*以上两种判断以后,如果蛇死就跳出内循环,重新开始*/ break; if([0]==[0]==)/*吃到食物以后*/ { setcolor(0);/*把画面上的食物东西去掉*/ rectangle(); []=-20;[]=-20; /*新的一节先放在看不见的位置,下次循环就取前一节的位置*/ ;/*蛇的身体长一节*/ ;/*画面上需要出现新的食物*/ score+=10; PrScore();/*输出新得分*/ } setcolor(4);/*画出蛇*/ for(i=0;i<;i++) rectangle([i],[i],[i]+10, [i]-10); delay(gamespeed); setcolor(0);/*用黑色去除蛇的的最后一节*/ rectangle([],[], []+10,[]-10); } /*endwhile(!kbhit)*/ if()/*如果蛇死就跳出循环*/ break; key=bioskey(0);/*接收按键*/ if(key==ESC)/*按ESC键退出*/ break; else if(key==UP&&!=4)/*判断是否往相反的方向移动*/ ; else if(key==RIGHT&&!=2) ; else if(key==LEFT&&!=1) ; else if(key==DOWN&&!=3) ; }/*endwhile(1)*/}/*游戏结束*/void GameOver(void){ cleardevice(); PrScore(); setcolor(RED); settextstyle(0,0,4); outtextxy(200,200,"GAME OVER"); getch();}/*输出成绩*/void PrScore(void){ char str[10]; setfillstyle(SOLID_FILL,YELLOW); bar(50,15,220,35); setcolor(6); settextstyle(0,0,2); sprintf(str,"score:%d",score); outtextxy(55,20,str);}/*图形结束*/void Close(void){ getch(); closegraph();}第3章 课程设计总结课程设计是培养学生综合运用所学知识 ,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对我们的实际工作能力的具体训练和考察过程.随着科学技术发展的日新月异,当今计算机应用在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握程序开发技术是十分重要的,而C语言又是最常见,功能最强大的一种高级语言,因此做好C语言课程设计是十分必要的。 回顾起此次课程设计,至今我们仍感慨颇多,的确,自从拿到题目到完成整个编程,从理论到实践,在整整半个月的日子里,可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我们懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对一些前面学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体,指针,链表……通过这次课程设计之 后,我们把前面所学过的知识又重新温故了一遍。我做的是做贪吃蛇游戏。简单的一个,但对我一个初学者来说却是一个很大的困难。更加是第一次做课程设计,所以第一天下午在机房做了一个下午却丝毫没有进展,最主要是不知从何开始,这个时候才知道上课老师们不厌其烦的教导是多么的宝贵,这个时候才后悔上课的时候没有认真的听讲。可是现在一切都晚了,还好时间还算是充裕,只好拿出书本重新复习一下。特别是结构体,指针的部分,几乎是一片空白。不过经过几天的努力,大体上把课本上的知识点看了一遍,知识点也都基本是撑握了,所以一下一步就是开始正式的编程序了。不过毕竟是个新手,还是不知如何下手,于是就在网上下了一篇类似的程序,经过仔细的研究,终于读懂了C语言编程的基本过程和方法。 经过一波三折,终于开始正式编程。编程是一件很枯燥很无聊的事情,但是出于完成作业,得到学分的压力,还必须强破自己坚持下去,按照老师所说的模块化思想,分部分的进行编写。而且编程是一件高精度、模范化的事情,稍有疏乎都会影响全局,也可能因为某一处的小的错误而导致整个程序的无法运行。所以认真仔细就是非常重要的了。开始的时候真的感觉编程是一件很无聊的事情,不过当一个程序运行成功的时候那种喜悦是无法言语的,那种成就感是无法比拟的。又经过几天的努力,终于把程序完成了,尽管程序还是有很多错误和漏洞,不过还是很高兴的。无论如何是自己的劳动成果,是自己经过努力得到的成绩,同时也是学习C语言的一次实践作业,自己进步的证明。 通过这次课程设计,使我对C语言有了更进一步的认识和了解,要想学好它要重在实践,要通过不断的上机操作才能更好地学习它,我也发现我的好多不足之处,首先是自己在指法上还不行,经常按错字母,通过学习也有所改进;再有对C语言的一些标准库函数不太了解,还有对函数调用的正确使用不够熟悉,还有对C语言中经常出现的错误也不了解,通过实践的学习,我认识到学好计算机要重视实践操作,不仅仅是学习C语言,还是其它的语言,以及其它的计算机方面的知识都要重在实践,所以后在学习过 程中,我会更加注视实践操作,使自己便好地学好计算机。在课程设计过程中,收获知识,提高能力的同时,我也学到了很多人生的哲理,懂得怎么样去制定计划,怎么样去实现这个计划,并掌握了在执行过程中怎么样去克服心理上的不良情绪。 小伙伴们求同去《贪吃蛇 (链表实现)》 在写一个程序之前得先有思路,本题中得思路是: 随机给出不同的形状(长条形、Z字形、反Z形、田字形、7字形、反7形、T字型)下落填充给定的区域,若填满一条便消掉,记分,当达到一定的分数时,过关,每关方块下落的速度不同,若在游戏中各形状填满了给定区域,为输者。 有了思路再动手,如果不会可以参考一下别人开源的项目! 因为项目复杂性,我给出了一个俄罗斯方块程序的项目地址在最后,祝您好运! 项目地址:俄罗斯方块游戏 .......论文.....源程序...... 一般不会有人给``` 机顶盒上游戏开发可以么,也是用C语言写的目 录第一章 绪论 机顶盒的产生背景 机顶盒的发展及其现状 游戏模块设计的必要性 模块设计需要解决的问题 3第二章 系统开发环境及相关技术介绍 XX-XX硬件平台 XX操作系统 内核 任务机制 消息队列 信号量 C语言的特点 7第三章 开发流程 功能需求分析 可行性分析 模块设计 编码 测试 11第四章 系统设计 游戏模块接口设计 游戏的初始化 游戏的按键读取和转化 游戏的暂停、恢复和退出 游戏算法设计 推箱子游戏设计 俄罗斯方块游戏设计 黑白棋游戏设计 14结 论 16谢 辞 17参 考 文 献 18附录 推箱子游戏源程序 19 1、用C语言绘制图形界面 EasyX图形库()即TC的图形库在VC下的移植。 包含库#include <> 先初始化图形窗口 initgraph(WINDOW_WIDTH, WINDOW_HIGH) ;WINDOW_WIDTH为窗口的宽带,WINDOW_HIGH为窗口的高度。 还有画线、显示文字等函数,可以参照其帮助文档。 注意:由于我们用的是EasyX图形库,故源文件后缀要为.cpp,但其中内容都是C的语法。 2、存储表示出俄罗斯方块的形状 一、我们可以用编号,不同的编号代表不同的俄罗斯方块,根据编号把不同方块的画法写在代码中,这样19种 方块就得有19种相应的代码来描绘。而且这样扩展性不好,若以后设计了新的方块,则需要更改大量源代码。 二、我们很自然的想到可用字模点阵的形式来表示,即设置一个4行4列的数组,元素置1即代表这个位置有小 方块,元素置0即代表这个位置无小方块,这个整个的4*4的数组组成俄罗斯方块的形状。 这个方法挺靠谱,但我们还可以优化一下:不用4*4的数组,而是用16个bit位来表示这个点阵。这样存储起来比较方便,故我们用unsigned int 的低16位来表示方块的点阵。 我们可以用掩码与表示俄罗斯方块的位进行操作,来识别并在屏幕上画出方块。 我们把俄罗斯方块点阵的数位存在rockArray中,我们可以事先把这19种方块的字模点阵自己转化成十六进制,然后在rockArray数组的初始化时赋值进去。 但这样做未免有点太费力,且扩展性也不太好,若以后设计的新方块种类加入,要改变数组rockArray中的值。 我们可以考虑把所有俄罗斯方块的点阵存储在配置文件中,在程序初始化时读取文件,把这些点阵转换成unsigned int的变量存储在rockArray中。 这样,以后我们增添新的方块形状只需要在配置文件中增加新的点阵即可。 @### @### @@## #### (为使得看起来更醒目,我们用@表示1,用#表示0) 3、让图形动起来 在某位置处用函数DrawRock在屏幕上画出俄罗斯方块,然后再擦除掉(即用背景色在原位置处重绘一次方块),最后在下落的下一个位置处用函数DrawRock在屏幕上画出俄罗斯方块,如此循环,中间用计时器间隔一段时间以控制下落的速度。 同理,按下屏幕的左右键也是如此,只是在按下键盘时把方块的位置重新计算了。 那么按下上方向键时,如何让方块翻转呢? 我们在配置文件中就把方块的顺时针翻转形态放在了一起: 我们每按一次上方向键改变一次方块的形状即可。若一直按上键,形状应该是循环地翻滚。 我们想到了循环链表的数据结构可实现这个效果。 可是我们若把这些一种类的方块的各种形态串成循环链表形式,那么每次重新生成方块时我们就难以随机地生成方块了。 故还是得用数组来存储,但又要有循环链表的功能,于是我们想到了静态循环链表。 我们用结构体来作为一个方块在rockArray中的元素 这样,当我们按下上方向键时,把传入函数DrawRock中的rockIndex变为当前方块结构体中的nextRockIndex即可。 参考资料:C语言图形界面篇 所谓教学策略,它是指教师为实现教学目标或教学意图而采用的一系列具体的问题解决行为方式,包括教学准备策略、教学实施策略、教学评价策略。教师是实施有效教学的灵魂,而其采取的有效的教学策略是实现教学有效性的有力保障。 本文是我在幼儿园语言集体教学活动中教学策略探索和运用的一些收获: 一、教学准备策略 教学准备策略主要是指教师在组织实施教学活动前所要处理的问题解决行为。具体说来就是教师在准备教学时,必须要解决的问题:教学内容的选择及目标的确定、教学材料的准备(包括课程资源的开发与利用)与处理、主要教学行为的预设选择、教学组织形式的编制以及教学方案的形成等。有效教学准备包括: 1.选择并确定活动内容与目标。兴趣是幼儿学习的内在动力。选择幼儿喜欢的语言活动内容并确定合适的教学目标是判断语言集体教学是否有效的直接依据。如大班语言活动《我家是动物园》,其故事内容幽默风趣,贴近幼儿生活,容易引发幼儿的共鸣,从选材看这个活动是符合大班幼儿发展目标的。活动目标有两点:一是观察分析画面,理解故事内容;二是激发阅读的兴趣。在确立教学目标时我从幼儿角度出发,不仅突出语言还涵盖态度情感、能力、知识经验多个纬度多个领域教育因素,是适宜大部分幼儿最近发展区需要的,是可以共同达到的,努力体现目标的有效的整合。 2.收集并制作适宜的教学具。一个集体教学活动具体需要什么教学具、教学具是否能充分激发幼儿主动学习等,这些都应该是教师活动前必须要考虑周全并要充分准备的。如活动中师生都需要摆放小图片来学习讲述的,那教师就要事先准备相关图片;需要利用幻灯机、电视机等多媒体技术辅助教学的,那教师就要事先检查这些设备性能是否保持良好等。根据幼儿思维具有具体形象性特点,教师在活动前还要尽量把一些抽象事物付诸于直观的形象之中。提供给幼儿的操作材料遵循多样性、丰富性、层次性、操作性、实效性等原则。 3.选择适宜的教学行为和组织形式。集体教学活动一般来说都是有组织、有计划地的预设活动。教师在活动前要预先考虑选择何种有效的教学行为和组织形式,在教学方法上力求体现多样化,在组织形式上力求突出生活化,在教学手段上努力结合现代化。如活动中教师要考虑导入部分是采用故事还是猜谜形式;设计的提问是启发式还是开放式等,教师一定要反复推敲来选择适宜的教学行为和组织形式,以激活集体语言教学活动的气氛,有效保持幼儿学习的兴趣和求知欲,促进教学有效开展。如大班语言活动《逃家小兔》中,教师将大图书制成了PPT幻灯投影,还将故事录音结合在课件里面,比较有效地体现了课程与现代教育技术的合理整合的新教育观念。 二、教学实施策略 教学过程的实施策略,主要是指教师为实施教学方案而发生在集体教学现场的一系列行为。包含两个方面的内容:一是教师的管理行为,它是为了使教学能顺利地进行而创造各种有利条件及为了确保单位时间内的教学效益的活动;二是教学行为,它包含直接指向教学目标和内容的事先作好准备的预设行为和直接指向幼儿和教学情景的无法事先作好准备的偶发事件时采用的教学行为两种。有效教学实施策略包括: 1.导入环节要简洁生动。集体教学的导入环节所占的时间较短,但它所起的作用却是不可忽视的。常言道:“良好的开端是成功的一半。”导入方式多种多样,应该是简洁、生动、准确的,要能在最短的时间内达到激智、激情、激趣之效。如在教学散文诗《冬爷爷的胡子》可以这样导入:你爷爷有胡子吗?你想知道冬爷爷的胡子是什么吗?我们一起来听散文诗《冬爷爷的胡子》就明白了……这是典型的与幼儿作简短谈话的导入方式,整个环节简洁、自然、切题。 2.教学策略要“因人而异”。所谓“因人而异”,是指对不同发展水平的幼儿施以不同的教学方法和手段,在一定程度上体现了教师的教学机智。俄国教育家乌申斯基曾说:“不论教育者怎样地研究了教育学理论,如果他缺乏教育机智,他就不可能成为一个优秀的教育实践者。”教学机智的实质就是一种转化师生矛盾的'艺术,是一种正确处理教与学矛盾的技巧。表现在语言艺术上则是直话曲说,急话缓说,硬话软说,正话反说,严话宽说。实施过程中,教师先要深入观察,了解每个幼儿的个性特征以及各方面发展的水平,去捕获幼儿发展的各种信息。然后教师及时对观察的结果进行客观分析和判断,确定幼儿语言学习的最近发展区,及时调整教育策略和要求,找出适合的教育手段和方法。 3.师幼互动要积极和谐。教学实施过程中教师要当好幼儿学习的引导者、支持者和合作者。教师利用自己的教学热情、各种语言艺术和魅力,积极营造一个轻松、愉快的学习活动氛围,激发幼儿参与活动的积极性、主动性,这是师幼有效互动的前提。过程中教师以“合作伙伴”的身份参与到幼儿的活动中去,能有效促进师幼情感交流,迸发智慧火花。如托班语言活动《小圆形》的组织过程中,教师一开始便利用多媒体课件播放圆形画面,配合魔棒“变魔术”,吸引幼儿的注意力,在设问“什么也是圆圆的”后,教师边演示课件边让“ 魔棒”变出许多圆形物:一会儿变成太阳,一会儿变成皮球,一会儿又变成气球等图案,让幼儿来感受儿歌、学念儿歌,最后教师和幼儿一起玩起了小圆形变变变的游戏。活动中,师幼关系和谐、互动有效。 三、教学评价策略 教学评价策略主要是指教学活动结束后教师对集体教学活动过程与结果做出的系列的价值判断行为,是一种过程性评价。这里的评价主要是指以幼儿为对象,对幼儿活动、幼儿在教学过程中的受益情况和所达到的水平作出价值判断。俗称教学反思。有效教学评价体现为: 1.评价标准多条。教学评价的目的应该是激发幼儿的自信心、保护幼儿的自尊心、调动幼儿学习的主动性和积极性,使幼儿有再发展的动力。《纲要》提出:尊重幼儿在发展水平、能力、经验、学习方式等方面的个体差异,因人施教,努力使每个幼儿都能获得满足。也就是说教学的评价标准不再是统一的,而要充分考虑到幼儿之间存在的个体差异性,尽量满足每个幼儿被教师承认和赞许的愿望。 2.评价方式多样。在实际教学评价过程中有的教师的评价方式单一,以口头语言评价为多,而且词汇也很贫乏,在一次活动中不断出现“不错”、“很好”、“真会动脑筋”等词语。我认为这样的评价方式缺乏针对性,不利于对幼儿进行有目的的指导。陈鹤琴先生在创立“活教育”理论是提出“教师要活。”这个理念我们一线教师可以拿来努力消化,并付诸实践,我们除了可以口头语言评价,还可以以图画、身体动作如表情、眼神等方式来参与评价,这样可以把幼儿的兴趣点推向更高层次。 3.评价时间多元。习惯上教师是在活动结束时对幼儿进行评价,而活动过程中却忽视了对幼儿进行赞扬和鼓励。有的教师往往只对一个片面点进行评价,而对幼儿在教学过程中的活动状况不作任何评价,这是不利于教师对教学过程的调节、控制和反馈的,而且对幼儿在活动中的表现也不能及时强化或纠正。正因为教育无时不在、无处不在,所以评价也应该贯穿在教学活动的全过程,这样可以不断激起幼儿的主体参与性,让幼儿在教学活动中体验成功的喜悦,获得进取的力量,分享合作的和谐,发现生命的灿烂。 综观现在的幼儿园语言集体教学活动,教师们都在努力地寻找有效的教学策略研究,但是如何有效,有效的程度到底如何,如何使教育教学效果达到最优化,这就有待于我们幼儿教师继续努力去尝试和思索了。 如何让幼儿园语言课堂游戏化教学论文幼儿园教学的基本形式与中、小学上课不同,因受课对象是3-6岁的幼儿,这时期的幼儿求知欲旺盛,对周围的事物表现出强烈的兴趣,好奇、好问、好动、好模仿、好游戏是他们的特点。另外幼儿年龄小,活动能力有限,还不能很好控制自己,掌握自己的行为。他们的学习没有目的性,只是凭兴趣,觉得有味就听,没味道就不听也不看。所以很多教师都会觉得幼儿园的课不好上。针对这些情况,在实际教学中,我给幼儿上课一般采用以下几种方法:(一)运用比喻、拟人的生动语言就是善于运用比喻、拟人的生动语言将每一项活动内容和孩子的生活经验相联系,让孩子有一种身临其境的感觉,从而就调动幼儿的积极性和主动性。在幼儿园里我们老师跟幼儿上课,老师和孩子们的关系是最亲密、最特殊的,教师是幼儿心目中绝对的权威。我常常就听到孩子们一本正经地跟家长及小伙伴说:“这是我们王老师说的!”可见,孩子心中的老师是神圣而伟大的,老师的话会被他们全盘接受。那么,老师只有善于运用比喻、拟人的生动语言,才能让他们喜欢你,只有这样孩子才会自然而然地参与并投入到教学活动中去,和我们的教学活动融为一体,此时的教学活动效果才是最佳的。因为这时孩子是“我要做”而不是“我不想做和我不愿意做”的态度,主动性、积极性自然而然地被我调动起来了。(二)运用游戏教学游戏是小朋友最开心的时候,可是我们幼儿园由于场地有限每天的户外游戏时间很少,这是老师们最头痛的事。只有想法在教室里做游戏,因为游戏使幼儿轻松愉快、毫无负担,很容易被幼儿接受,所以上课时,根据具体的教学目的、任务、内容选择不同游戏。不是枯燥的教他们学儿歌,可以让幼儿边做律动边学儿歌,还可以边讲故事边做些肢体动作,如:老虎走路的摸样、小花猫走路的摸样、青蛙蹦跳的摸样还有大灰狼恶狠狠的摸样等等,使幼儿学会各种动物的行走方式,在讲完故事后,可以让幼儿扮演故事中的角色来理解,加深故事内容。游戏化的语言使幼儿容易理解、容易引起他们的兴趣。(三)及时观察并鼓励幼儿上好语言课幼儿园的各项活动都离不开观察,观察可丰富幼儿感性经验,扩大眼界,发展幼儿感知能力,培养幼儿对周围事物的兴趣和求知欲。幼儿的认识是从观察认识周围事物的,观察法是幼儿园上课的有效方法,也是幼儿园上课的常用方法。因此,在上课前,根据教学要求,做好观察前准备,包括:确定观察目的、选择观察对象、拟定观察计划、创设观察的环境条件。观察开始时,要向幼儿提出观察目的,引起观察兴趣,也可提出一定的思考问题来引起幼儿观察。观察过程中,老师要充分发挥语言、手势的指导作用,启发幼儿从不同方面去感知观察对象,并能发现问题、提出问题,用语言描述观察的对象,允许幼儿相互交谈,然后进行指导。在观察结束时,要总结观察的印象,让幼儿将观察到的知识进一步巩固和条理化。也可运用文艺作品,如图画、儿歌等,教师也要引导、支持、鼓励幼儿在发展的进程中一步一个台阶,由幼稚逐步走向成熟。教师在上课过程通过敏锐的观察,一旦发现幼儿在某一方面的一点点进步马上要给予鼓励、表扬。我认为教师这种外在的鼓励可以转化为幼儿内在的需要,使幼儿在体验到成功喜悦后萌发不断攀登的愿望。因此能灵活地运用鼓励的语言,调节好孩子的情绪,是教师的魅力所在。(四)运用情感性语言上好语言课语言不仅传递着认知信息还伴随着情感交流,情感因素对认知效果有增强或减弱的作用。情感恰似润滑剂,缺乏情感就会缺乏生命力。幼儿情感比较直接、外露,这就要求我们老师将自己的情绪充分表现在幼儿面前,将情感渗透在每一句话中,贯穿在各类活动中。切不可忽冷忽热,变幻无常,更不能让幼儿觉得老师捉摸不透、无法接近。如:我班的刘子豪小朋友刚来园时,胆子特别小,她妈妈说:“这孩子刚从河北来,才来了几天,不喜欢跟生人交往,也不愿来幼儿园,哪怕是老师看他一眼也低着头,想要和他说两句话眼泪就稀里哗啦地下来了。”我想:只有当我们和他建立了感情,我们才有机会了解他,帮助他。于是,每天早上豪豪一来,我就高兴地抱抱他:“豪豪来了,王老师好喜欢你。”中午饭快吃完了,我就对他说:“今天这么快呀,比老师还快!明天老师和你比赛哦!”午睡醒来,我说:“今天豪豪好乖哦!自己睡得好香!不要老师陪了耶!”逐渐逐渐地他不再怕我们老师了,下课常常走到我的身边说说话,游戏中也和大家一起玩。豪豪的爸爸还感叹说:“豪豪真的变了,变得开朗了,也喜欢上幼儿园了,整天都是乐呵呵的!”(五)课堂语言要突出重点教师的语言要重点突出,适时适当地运用,就会有事半功倍的效果。孩子的注意力集中只有一段时间,过了这段时间,再要集中孩子的注意力就很困难了。过多的话只会让孩子觉得没劲,从而失去兴趣,而太过简单的语言会让孩子觉得云里雾里,一时摸不到头脑,不知道教师在说些什么,同样达不到预期的效果。因此教师的语言要有详略,生动有趣,才会对孩子产生较强的吸引力,真正达到事半功倍的效果。如:我带的小班幼儿自理能力比较差,经常将鞋子穿反,在教幼儿穿鞋子分清左右脚时,我没有用枯燥的说教,而是告诉幼儿:“左边的鞋是鞋哥哥,右边的鞋是鞋弟弟,哥哥和弟弟一对双胞胎,永远不吵架。”在教幼儿叠衣服时,我告诉幼儿:“小小扣子找扣眼,小小袖子找袖子,我的衣服弯弯腰,我的帽儿点点头。”这些节奏明快,朗朗上口的儿歌使幼儿在诗情画意的氛围中轻松自然地学会了穿鞋子、叠衣服等本领,不仅提高了自理能力和审美能力,而且陶冶了幼儿的情操。(六)课堂小结的重要性教师根据教学目的、内容及幼儿年龄特点、实际水平适当选择灵活运用。要充分发挥幼儿的能动作用和创造性。由于上课的过程是一个有情感参与的认知过程,教师在运用各种方法时,对幼儿的关心爱护和以身作则是教师对幼儿配合默契的一种潜力,是运用各种方法取得成功的源泉。在课堂中教师应使幼儿的学习处于愉快之中,以便幼儿更有效地学习。一节课能否吸引幼儿,取决于它的设计是否新颖。该怎样结束一堂课也是值得重视的,很多教师不注重结课,上课讲到哪就算哪,匆匆收场,虎头蛇尾,影响教学效果。平时,我们结课常用小结,活动和作业布置等。上课要有良好的开端,也要有完美的结束,要善始善终。完美的结束不仅保证课堂教学结构的完整。同时,也能令人回味无穷,留恋往返。 幼儿《看图说话》训练通过特定的画面,教师充满的讲解,激发学生的学习兴趣,幼儿语言学习的潜能,培养幼儿有顺序,有条理地观察图画,并展开合理想象的能力;激发幼儿对语言的兴趣,养成当众发言大胆,有感情,声音宏亮的好习惯;使幼儿具有初步的学习说完整话,简单有条理的描述一件事的叙述能力,并在口语表达方面拥有明显的优势;鼓励幼儿努力选择贴近生活的话题,在日常生活中不断地锻炼自己口语交际的能力,为幼儿在今后的进一步学习打下坚实的基础。 前不久,我看见我的一个博客好友用一种看图写诗的方式在创作,并且,每一幅图都能创编出一首动人的诗。随后那些前来观看的博客好友,也随之编起诗来,而且每一首诗都和图片有着某种。我想,如果把这种形式带到幼儿园,对幼儿的语言表达能力进行培养,那么,以后他们的看图写作能力一定很棒! 幼儿的想象是无穷尽的,你给他的每一样东西,他们想象的结果都会令你惊讶!在他们眼里,每一朵白云都是有生命、有活力的,或许是一只羔羊,或许是一只小猫,都会隐藏着许多动人的故事!皮亚杰说:“幼儿是泛灵性的,自然界中的一草一木在幼儿眼里都是有生命和情感。幼儿用充满好奇的眼睛来看世界,他们是天生的梦想家,世界在他们眼里变得生机盎然。” 其实幼儿是有想象的潜能的,在教育活动中,也有许多能发挥幼儿想象力的内容,比如谜语、顺口溜、绕口令、笑话、创编儿、续编故事结尾、美术想象添画等等,都是幼儿感兴趣的活动,因为他们给与了幼儿足够的想象空间!我曾在大班开展过“吹牛皮的我”想象活动,我问:“你想发明一顶什么样的帽子?”有的小朋友回答:“我想发明一定可以带我飞翔的帽子”,想去哪里就可以飞向哪里;也有的说想发明一顶可以养宠物的帽子,不管自己去哪里,心爱的小动物就跟随到哪里……可见小朋友的想象是多么丰富。又如大班看图讲述《小兔过生日》,小班看图说话《圆圆的 弯弯的》都给幼儿带来足够的想象空间。但不论在哪一节课上,我发现男孩举手次数少于女孩,回答问题的男孩在语言讲述方面也次于女孩,这究竟是为什么呢? 一、 问题提出 关于幼儿性别差异的研究早就引起了国内外心理学家和教育学家的高度重视和极大兴趣。维勒(Weller)的实验结果显示:在语言发展方面,女孩说话比男孩早,且词汇丰富,言语缺陷较男孩少;许多有关语言运用的研究也发现男孩和女孩在、语调、词汇句式、谈话内容、交际风格等方面也存在着很大差异。 二、对以上问题的解决方法 (1)“语言游戏活动—看图说话”会给幼儿带来快乐,激发兴趣 幼儿园里应该多利用“语言游戏活动”锻炼幼儿的口语表达能力,我认为看图说话是最有效的活动方式。因为图片会给幼儿带来启发,进而让幼儿对语言产生更多更大的兴趣。 (2)“语言游戏活动—看图说话”对幼儿园里男孩和女孩言语行动数量的改变 第一、由于男孩的语言发展起步晚与女孩,幼儿园老师在“语言游戏活动—看图说话”中应有意识的多给男孩语言表达的机会,耐心的引导男孩进行各种句式表达的练习。到了6岁时男孩和女孩的语言发展水平已无显著差异,因此,教师要打破女孩的语言表达能力本身比男孩要强的思维定势,不能忽略男孩语言能力的培养。 第二、女孩在各个年龄段使用形容词、副词、语气助词以及礼貌用语的频率均高于同龄男孩,而男孩和女孩在形容词和副词使用上的表现呈“同高同低”的并行趋势。这说明在“语言游戏活动”中交流双方会有意识的互相模仿。因此,教师可以多鼓励男孩和女孩多在一起做“看图说话”游戏,在游戏中促进他们的语言运用向着更加成熟的方向发展。 第三、做到“家—园”同步,合理培养幼儿的口语表达能力。在家中,家长可以陪同幼儿一起做“语言游戏活动”。比如“看图说话”,家长可以将图片利用“拟人化”的形式启发幼儿;而在幼儿园中,教师可以利用先进的电子幻灯技术,让图片变得灵活、有趣味儿,从而引起幼儿想继续探索的欲望。在做“语言活动游戏—看图说话”中,可以由小到大,由简到难的给幼儿看一些图片,让他们先看图说一句简单的话,再慢慢学说一个故事,甚至编一首儿也未尝不可基于c语言的贪吃蛇毕业论文
基于c语言的俄罗斯方块毕业论文
语言游戏的研究论文