文档库 最新最全的文档下载
当前位置:文档库 › c语言推箱子代码

c语言推箱子代码

c语言推箱子代码
c语言推箱子代码

#include

#include

void map1();

void map2();

void map3();

void show();

void move();

void main(int argc,char*argv[])

{

time_t a,b;

time(&a);

system("color 1E");

loop1: {

system("cls");//刷屏

printf("\n\n\n\n\n\n\t\t\t\t欢迎进入推箱子游戏\n\n\t\t\t\t 请按a b c选择游戏\n\n\t\t\t\t 按 d 键结束");

int t=getch();

if(t=='d')

{

printf("\n\t\t\t ");

}

else

{

if(t=='a')

{

map1();

goto loop1;

}

if(t=='b')

{

map2();

goto loop1;

}

if(t=='c')

{

map3();

goto loop1;

}

else

{

printf("\n\n\t\t\t\t 请重新输入:");

goto loop1;

}

}

time(&b);

printf("\n\n\n\n\t\t\t\t 游戏总共用时%.3d秒\n\t\t\t ",b-a);

getch();//等待读取回车符以结束程序

}

void map1()

{

time_t p,q,o;

time(&p);

int i=4,j=4,m=6,n=2,t=1,k=3;

system("cls");//刷屏

system("color 2E");

int x=1,y=7;

char z,a[9][9]=

{ /*为背景设置初始资料*/

{'#','#','#','#','#','#','#','#','#'},

{'#','#','#', 3, 0 , 0 , 0 , 1 ,'#'},

{'#','#', 0 , 0 , 0 ,'#', 0 ,'#','#'},

{'#', 0 , 0 ,'#', 0 , 0 , 5 , 0 ,'#'},

{'#', 0 , 5 , 5 , 3 , 0 , 0 , 0 ,'#'},

{'#','#', 0 ,'#', 0 , 0 ,'#','#','#'},

{'#','#', 3 , 0 , 0 , 0 ,'#','#','#'},

{'#','#','#','#','#','#','#','#','#'},

{'#','#','#','#','#','#','#','#','#'}

};

show(a);//调用输出函数

loop://语句标号

move(a,&x,&y,i,j,m,n,t,k,&z);

if(a[i][j]=='!'&&a[m][n]=='!'&&a[t][k]=='!')

{

system("cls");//刷屏

show(a);

printf("\t\t\t\t YOU ARE WIN!\n");

time(&q);

printf("\t\t\t\t\t 用时%.3d秒\n",q-p);

printf("\t\t\t\t*******回车重新选择*******\n\t\t\t\t");

getch();

}

else

{

time(&o);

if(z=='d')

{

return;

if(o-p>30)

{

loop1: system("cls");//刷屏

printf("\t\t\t\t时间已过请重新回车选关!");

int g=getch();

if(g==13)//判断是否为回车符

{

return;

}

else

{

goto loop1;

}

}

system("cls");//刷屏

show(a);//调用输出函数

goto loop;

}

}

void map2()

{

time_t p,q,o;

time(&p);

int i=2,j=1,m=1,n=3,t=4,k=6;

system("cls");//刷屏

system("color 2E");

int x=4,y=1;

char z,b[9][9]=

{ /*为背景设置初始资料*/

{'#','#','#','#','#','#','#','#','#'},

{'#','#','#', 3 , 0 ,'#','#','#','#'},

{'#', 3 ,'#', 0 , 0 , 0 , 0 ,'#','#'},

{'#', 0 , 5 , 0 ,'#','#', 0 , 0 ,'#'},

{'#', 1 , 0 , 5 , 0 , 0 , 3 , 0 ,'#'},

{'#', 0 , 0 , 0 , 0 , 0 , 0 ,'#','#'},

{'#','#','#', 0 , 0 , 5 ,'#','#','#'},

{'#','#','#','#', 0 , 0 ,'#','#','#'},

{'#','#','#','#','#','#','#','#','#'}

};

show(b);//调用输出函数

loop://语句标号

move(b,&x,&y,i,j,m,n,t,k,&z);

if(b[i][j]=='!'&&b[m][n]=='!'&&b[t][k]=='!')

{

system("cls");//刷屏

show(b);

printf("\t\t\t\t YOU ARE WIN!\n");

time(&q);

printf("\t\t\t\t\t 用时%.3d秒\n",q-p);

printf("\t\t\t\t*******回车重新选择*******\n\t\t\t\t");

getch();

}

else

{

time(&o);

if(z=='d')

{

return;

}

if(o-p>30)

{

loop1: system("cls");//刷屏

printf("\t\t\t\t时间已过请重新回车选关!");

int g=getch();

if(g==13)//判断是否为回车符

{

return;

}

else

{

goto loop1;

}

}

system("cls");//刷屏

show(b);//调用输出函数

goto loop;

}

}

void map3()

{

time_t p,q,o;

time(&p);

int i=2,j=1,m=6,n=2,t=7,k=6;

system("cls");//刷屏

system("color 2E");

int x=3,y=6;

char z,c[9][9]=

{ /*为背景设置初始资料*/

{'#','#','#','#','#','#','#','#','#'},

{'#','#','#','#','#', 0 , 0 , 0 ,'#'},

{'#', 3 ,'#', 0 , 0 , 0 , 0 , 0 ,'#'},

{'#', 0 , 5 , 0 , 5 ,'#', 1 ,'#','#'},

{'#', 0 , 0 , 0 , 0 , 0 , 5 , 0 ,'#'},

{'#','#', 0 , 0 , 0 , 0 , 0 , 0 ,'#'},

{'#','#', 3 , 0 ,'#', 0 ,'#', 0 ,'#'},

{'#','#','#', 0 , 0 , 0 , 3 ,'#','#'},

{'#','#','#','#','#','#','#','#','#'}

};

show(c);//调用输出函数

loop://语句标号

move(c,&x,&y,i,j,m,n,t,k,&z);

if(c[i][j]=='!'&&c[m][n]=='!'&&c[t][k]=='!')

{

system("cls");//刷屏

show(c);

printf("\t\t\t\t YOU ARE WIN!\n");

time(&q);

printf("\t\t\t\t\t 用时%.3d秒\n",q-p);

printf("\t\t\t\t*******回车重新选择*******\n\t\t\t\t");

getch();

}

else

{

time(&o);

if(z=='d')

{

return;

}

if(o-p>30)

{

loop1: system("cls");//刷屏

printf("\t\t\t\t时间已过请重新回车选关!");

int g=getch();

if(g==13)//判断是否为回车符

{

return;

}

else

{

goto loop1;

}

}

system("cls");//刷屏

show(c);//调用输出函数

goto loop;

}

}

void show(char b[9][9])

{

printf("\t\t\t\t***************************\n");

printf("\t\t\t\t 推箱子游戏");

printf("\n\t\t\t\t***************************\n");

printf("\t\t\t\t 人:★墙:■\n\t\t\t\t 箱子:◎目的地:□\n\t\t\t\t 按d 键退出游戏\n\t\t\t\t 限时30秒!");

printf("\n\t\t\t\t***************************\n");

int i;

int k;

for(i=0;i<9;i++) //使用循环将地图转换输出

{

printf("\t\t\t\t ");

for(k=0;k<9;k++)

{

if(b[i][k]=='#')

{

printf("■");

}

else

{

if(b[i][k]==3)

{

printf("□");

}

else

{

if(b[i][k]==5)

{

printf("◎");

}

else

{

if(b[i][k]==1)

{

printf("★");

}

else

{

if(b[i][k]==0)

{

printf("");

}

else

{

if(b[i][k]=='!')

{

printf("⊙");

}

else

printf("%c ",b[i][k]);

}

}

}

}

}

}

printf("\n");

}

printf("\t\t\t\t***************************\n");

}

void move(char c[9][9],int *x,int *y,int X,int Y,int A,int B,int N,int M,char *t)

{

*t=getch();//用getch()得到上下左右键,要调用二次getch(),上键72,下键80,左键75,右键77.

if(*t=='d'){}//遇到d返回

if(*t==75)//左键

{

if(c[*x][*y-1]=='#'||c[*x][*y-1]==5&&c[*x][*y-2]==5

||c[*x][*y-1]==5&&c[*x][*y-2]=='!'){}//遇到墙或推两个箱子

else

{

if(c[*x][*y-1]=='!')//把箱子推出目的地

{

if(c[*x][*y-2]!=0){}

else

{

c[*x][*y]=0;

*y-=1;

c[*x][*y]=1;

c[*x][*y-1]=5;

}

}

else

{

if(c[*x][*y-1]==5&&c[*x][*y-2]!='#')//推箱子

{

if(c[*x][*y]==c[X][Y]||c[*x][*y]==c[A][B]

||c[*x][*y]==c[N][M]) //推着箱子离开目的地

{

c[*x][*y]=3;

*y-=1;

c[*x][*y]=1;

c[*x][*y-1]=5;

}

else

{

c[*x][*y]=0;

*y-=1;

c[*x][*y]=1;

c[*x][*y-1]=5;

}

}

else

{

if(c[*x][*y-1]==5&&c[*x][*y-2]=='#'){}//推不动箱子

else

{

if(c[*x][*y-1]==c[X][Y]||c[*x][*y-1]==c[A][B]

||c[*x][*y-1]==c[N][M])//进到目的地

{

c[*x][*y]=0;

*y-=1;

c[*x][*y]=1;

}

else

{

if(c[*x][*y]==c[X][Y]||c[*x][*y]==c[A][B]

||c[*x][*y]==c[N][M]) //离开目的地

{

c[*x][*y]=3;

*y-=1;

c[*x][*y]=1;

}

else //走到空地

c[*x][*y]=0;

*y-=1;

c[*x][*y]=1;

}

}

}

}

}

}

if(c[X][Y]==5||c[A][B]==5||c[N][M]==5)//箱子推到目的地

{

c[*x][*y-1]='!';

}

}

if(*t==77)//右键

{

if(c[*x][*y+1]=='#'||c[*x][*y+1]==5&&c[*x][*y+2]==5

||c[*x][*y+1]==5&&c[*x][*y+2]=='!'){}//遇到墙或推两个箱子

else

{

if(c[*x][*y+1]=='!')//把箱子推出目的地

{

if(c[*x][*y+2]!=0){}

else

{

c[*x][*y]=0;

*y+=1;

c[*x][*y]=1;

c[*x][*y+1]=5;

}

}

else

{

if(c[*x][*y+1]==5&&c[*x][*y+2]!='#')//推箱子

{

if(c[*x][*y]==c[X][Y]||c[*x][*y]==c[A][B]

||c[*x][*y]==c[N][M]) //推着箱子离开目的地

{

c[*x][*y]=3;

*y+=1;

c[*x][*y]=1;

c[*x][*y+1]=5;

else

{

c[*x][*y]=0;

*y+=1;

c[*x][*y]=1;

c[*x][*y+1]=5;

}

}

else

{

if(c[*x][*y+1]==5&&c[*x][*y+2]=='#'){}//推不动箱子

else

{

if(c[*x][*y+1]==c[X][Y]||c[*x][*y+1]==c[A][B]

||c[*x][*y+1]==c[N][M])//进到目的地

{

c[*x][*y]=0;

*y+=1;

c[*x][*y]=1;

}

else

{

if(c[*x][*y]==c[X][Y]||c[*x][*y]==c[A][B]

||c[*x][*y]==c[N][M]) //离开目的地

{

c[*x][*y]=3;

*y+=1;

c[*x][*y]=1;

}

else //走到空地

{

c[*x][*y]=0;

*y+=1;

c[*x][*y]=1;

}

}

}

}

}

}

if(c[X][Y]==5||c[A][B]==5||c[N][M]==5)//箱子推到目的地{

c[*x][*y+1]='!';

}

}

if(*t==72)//上键

{

if(c[*x-1][*y]=='#'||c[*x-1][*y]==5&&c[*x-2][*y]==5

||c[*x-1][*y]==5&&c[*x-2][*y]=='!'){}//遇到墙或推两个箱子

else

{

if(c[*x-1][*y]=='!')//把箱子推出目的地

{

if(c[*x-2][*y]!=0){}

else

{

c[*x][*y]=0;

*x-=1;

c[*x][*y]=1;

c[*x-1][*y]=5;

}

}

else

{

if(c[*x-1][*y]==5&&c[*x-2][*y]!='#')//推箱子

{

if(c[*x][*y]==c[X][Y]||c[*x][*y]==c[A][B]

||c[*x][*y]==c[N][M]) //推着箱子离开目的地

{

c[*x][*y]=3;

*x-=1;

c[*x][*y]=1;

c[*x-1][*y]=5;

}

else

{

c[*x][*y]=0;

*x-=1;

c[*x][*y]=1;

c[*x-1][*y]=5;

}

}

else

{

if(c[*x-1][*y]==5&&c[*x-2][*y]=='#'){}//推不动箱子

else

if(c[*x-1][*y]==c[X][Y]||c[*x-1][*y]==c[A][B]

||c[*x-1][*y]==c[N][M])//进到目的地

{

c[*x][*y]=0;

*x-=1;

c[*x][*y]=1;

}

else

{

if(c[*x][*y]==c[X][Y]||c[*x][*y]==c[A][B]

||c[*x][*y]==c[N][M]) //离开目的地

{

c[*x][*y]=3;

*x-=1;

c[*x][*y]=1;

}

else //走到空地

{

c[*x][*y]=0;

*x-=1;

c[*x][*y]=1;

}

}

}

}

}

}

if(c[X][Y]==5||c[A][B]==5||c[N][M]==5)//箱子推到目的地

{

c[*x-1][*y]='!';

}

}

if(*t==80)//下键

{

if(c[*x+1][*y]=='#'||c[*x+1][*y]==5&&c[*x+2][*y]==5

||c[*x+1][*y]==5&&c[*x+2][*y]=='!'){}//遇到墙或推两个箱子

else

{

if(c[*x+1][*y]=='!')//把箱子推出目的地

{

if(c[*x+2][*y]!=0){}

else

c[*x][*y]=0;

*x+=1;

c[*x][*y]=1;

c[*x+1][*y]=5;

}

}

else

{

if(c[*x+1][*y]==5&&c[*x+2][*y]!='#')//推箱子

{

if(c[*x][*y]==c[X][Y]||c[*x][*y]==c[A][B]

||c[*x][*y]==c[N][M]) //推着箱子离开目的地

{

c[*x][*y]=3;

*x+=1;

c[*x][*y]=1;

c[*x+1][*y]=5;

}

else

{

c[*x][*y]=0;

*x+=1;

c[*x][*y]=1;

c[*x+1][*y]=5;

}

}

else

{

if(c[*x+1][*y]==5&&c[*x+2][*y]=='#'){}//推不动箱子

else

{

if(c[*x+1][*y]==c[X][Y]||c[*x+1][*y]==c[A][B]

||c[*x+1][*y]==c[N][M])//进到目的地

{

c[*x][*y]=0;

*x+=1;

c[*x][*y]=1;

}

else

{

if(c[*x][*y]==c[X][Y]||c[*x][*y]==c[A][B]

||c[*x][*y]==c[N][M]) //离开目的地

{

c[*x][*y]=3;

*x+=1;

c[*x][*y]=1;

}

else //走到空地

{

c[*x][*y]=0;

*x+=1;

c[*x][*y]=1;

}

}

}

}

}

}

if(c[X][Y]==5||c[A][B]==5||c[N][M]==5)//箱子推到目的地

{

c[*x+1][*y]='!';

}

}

}

c语言推箱子代码

#include #include void map1(); void map2(); void map3(); void show(); void move(); void main(int argc,char*argv[]) { time_t a,b; time(&a); system("color 1E"); loop1: { system("cls");//刷屏 printf("\n\n\n\n\n\n\t\t\t\t欢迎进入推箱子游戏\n\n\t\t\t\t 请按a b c选择游戏\n\n\t\t\t\t 按 d 键结束"); int t=getch(); if(t=='d') { printf("\n\t\t\t "); } else { if(t=='a') { map1(); goto loop1; } if(t=='b') { map2(); goto loop1; } if(t=='c') { map3(); goto loop1; } else { printf("\n\n\t\t\t\t 请重新输入:"); goto loop1; } }

time(&b); printf("\n\n\n\n\t\t\t\t 游戏总共用时%.3d秒\n\t\t\t ",b-a); getch();//等待读取回车符以结束程序 } void map1() { time_t p,q,o; time(&p); int i=4,j=4,m=6,n=2,t=1,k=3; system("cls");//刷屏 system("color 2E"); int x=1,y=7; char z,a[9][9]= { /*为背景设置初始资料*/ {'#','#','#','#','#','#','#','#','#'}, {'#','#','#', 3, 0 , 0 , 0 , 1 ,'#'}, {'#','#', 0 , 0 , 0 ,'#', 0 ,'#','#'}, {'#', 0 , 0 ,'#', 0 , 0 , 5 , 0 ,'#'}, {'#', 0 , 5 , 5 , 3 , 0 , 0 , 0 ,'#'}, {'#','#', 0 ,'#', 0 , 0 ,'#','#','#'}, {'#','#', 3 , 0 , 0 , 0 ,'#','#','#'}, {'#','#','#','#','#','#','#','#','#'}, {'#','#','#','#','#','#','#','#','#'} }; show(a);//调用输出函数 loop://语句标号 move(a,&x,&y,i,j,m,n,t,k,&z); if(a[i][j]=='!'&&a[m][n]=='!'&&a[t][k]=='!') { system("cls");//刷屏 show(a); printf("\t\t\t\t YOU ARE WIN!\n"); time(&q); printf("\t\t\t\t\t 用时%.3d秒\n",q-p); printf("\t\t\t\t*******回车重新选择*******\n\t\t\t\t"); getch(); } else { time(&o); if(z=='d') { return;

推箱子游戏报告书

推箱子游戏设计报告书 一、项目背景 本实训要求对“推箱子游戏”进行分析、设计。 本实训对实训项目已经作了较为详细的分析及相关知识讲解,通过实训,促使专业技能得到综合训练,让我们了解软件开发基本技术和工作过程。同时,本实训中了解图形界面设计基本技术。 通过本系统的开发,要了解软件开发的整个过程,掌握软件开发的基本方法,提前培养从事软件行业应具备的基本素质和能力,为以后的学习作一个铺垫。 二、设计目的 本课程的课程设计实际是重在提升学生对程序的理解力和游戏界面的设计能力,进行的一次全面的综合训练,其目的在于加深动手能力以及对游戏设计思想的理解,掌握运用VB 开发应用程序的基本方法及基本技巧。 三、游戏介绍 本游戏设计了关卡设计器对有难度进行设计,同时用方向键↑↓←→控制小人的移动,空格重新开始,回车选择下一关,page up 上一关,page down 下一关,Esc 退回。小人移动来推箱子使箱子到达指定位置,如果箱子全部到达指定位置就表示过关 3.1界面设计 3.1.1界面设计原则: 1用户帮助 2向导 3快捷键 4鼠标与键盘对应 5布局合理化 6显示信息一致性 7界面一致性 8美观与协调性 9合理性 10规范性 11易用性 12一般交互 13数据输入 本游戏是一个简单游戏所以只涉及一些简单的界面设计原则.

3.2用户界面 又称人机界面,实现用户与计算机之间的通信,以控制计算机或进行用户与计算机之间的数据传送的系统部件。 GUI:即图形用户界面,一种可视化的用户界面,它使用图形界面代替正文界面。 本系统坚持图形用户界面(GUI)设计原则,界面直观、对用户透明。用户接触软件后对界面上对应的功能一目了然、不需要多少培训就可以方便地使用本应用系统。

基于VC++的推箱子游戏设计与实现

本科毕业设计(论文) 基于VC++的推箱子游戏设计与实现 学院自动化学院 专业电子信息科学与技术 年级班别2008级(2)班 学号3108001166 学生姓名吕文财 指导教师 ________张学习 ___ __ 2012年6月

基于 VC++ 的推箱子游戏的设计与实现 吕文财 自动化学院

摘要 近年来随着科技的飞速发展, Visual C++语言的应用正在不断深入。Visual C++语言是当今国际上非常流行的计算机高级编程语言之一,它是面向对象的可视化集成编程系统。它不但具有程序框架自动生成、灵活方便的类管理、代码编写和界面设计集成交互操作、可开发多种程序等优点,而且通过简单的设置就可使其生成的程序框架支持数据库接口、OLE2,WinSock网络、3D控制界面。它更以自动编译功能和高级除错功能著称。因此,广泛受到编程人员青睐。不仅适合作为系统描述语言,也用来编写系统软件,还可以用来编写应用软件和设计游戏等。 本论文着重分析用Microsoft Visual C++语言实现一个较为简单的推箱子游戏,旨在介绍推箱子游戏的实现方法,并逐步介绍Microsoft Visual C++6.0图形编程的方法和技巧。本设计通过主界面对话框类、关口选择对话框类、帮助对话框类三大类以及键盘操作模块、游戏规则模块、地图文件读取模块、背景音乐播放模块、地图绘制模块,共五大模块构成。实现了任意关数选择、难度依次加大、游戏步数记录、背景音乐播放、游戏帮助、胜负判断等多个功能,采用图形函数的使用实现了一个完整的推箱子游戏界面,界面清晰可见。 关键词:推箱子,c++语言,模块,图形编程

JAVA推箱子游戏

淮海工学院计算机工程学院 课程设计报告 设计名称:面向对象课程设计 选题名称:推箱子的设计与实现 系(院):计算机工程学院 设计时间:2014.3.10~2014.4.12 设计地点:软件实验室、教室

(3)功能模块 本程序包括四个功能模块:class mainFrame,class mainpanel,class Sound,class Readmap, 既主面板类,绘图的面板,播放背景音乐,用输入流读取地图文件。class mainpanel 主要是实现地图的初始化以及每一关地图的重载,class Sound主要是播放背景音乐。Adpressed的功能是响应工人和箱子的移动以及工人、箱子、墙之间的碰撞检测。 表1 成员变量表 成员变量变量类型名称 开始状态Boolean Start 窗口高度int fHeight 窗口宽度int fWidth 计时器Timer timer 延时int delay 开始时间Date starttime 步数int steps 地图容器MapPanel mapPanel 玩法介绍String instruction 开始状态Boolean Start 表2方法表 方法名功能备注 Puzzle() 创建游戏窗口和设置图标 backaction() 后台操作getmap() 返回地图的方法 StartGame() 开始游戏控制,更新开始菜单 endgame() 结束游戏控制弹出结束窗口 getmap()/ 返回地图的方法调用类spite() menuShowClik() 在游戏中显示完整图片调用类class ShowImage actionPerformed() 动作演示 menuExit() 退出游戏 flush() 清空缓存 游戏过程设计 游戏中过程中,最为主要地方在于对地图矩阵,以及主角状态信息(包括位置、行走状态等)的维护,主角每行走一步,就更新一次地图信息和主角状态信息。另外一个比较重要的地方是游戏状态的保存方面。在该游戏中,使用栈结构保存主角每次行走的

使用C语言编写简单小游戏

纯真童趣的《泡泡堂》,还有武林情仇,笑傲江湖的《剑侠情缘on line》.它是e 时代常谈的话题,是交互式娱乐的主力军,是一种高层次的综合艺术,更是一个民族的文化,世界观的全新传播方式 .作为游戏玩家的我们,是不是想设计一个属于自己的游戏呢? 爱玩是人的天性,而C语言是我们计算机专业都要学习的一门基础学科.一般来说,是比较枯燥的.那么,我们能不能通过编一些小游戏来提高它的趣味性呢?这样学习程序设计,就不会是一件艰苦 ,枯燥的事,它变得象电脑游戏一样充满好奇,富有乐趣. 1,总是从Hello,world开始学习编程的第一个程序,一般就是打印一个亲切的词语——"Hell o,world!".让我们来看看这个最简单的C程序: #incolude <> /*把输入输出函数的头文件包含进来*/ int main() { printf("Hello, world!");/*在屏幕上输出字符串"Hello,world!"*/ return 0;/*退出main函数,并返回0*/ } 下面我们发现几个值得改进的地方,1,程序的运行结果一闪而过 .2,每执行这个程序一次都能看见上次运行留下的字符.3,我们还希望屏幕输出一个笑脸来欢迎我们. 让我们来改进一下这个程序吧! 1,在return语句的前面加一句:getch ();,表示按任意键结束.2,在printf语句前用clrscr函数清屏,要使用这个函数和getch函数,需要在程序开头再包含头文件码也有许多非常好玩的字符,比如ASCII码值为2的就是一个笑脸,我们可以用printf("%c", 2)来输出一个笑脸. 现在我们把Hello,world程序改成一个更好看的Hello,world了.下面让我们开始做游戏吧! 2,心动的开始,一个运动中的笑脸大家小时侯喜欢看动画片吗?哈哈,我猜你们都喜欢吧!下面就让我们来做一个小动画吧.在屏幕上显示一个运动的小笑脸,而且当它到达屏幕的边缘时会自动弹回来.先在程序定义一个在屏幕中运动的点的结构: struct move_point { int x, y;/*该点的位置,包括x坐标和y坐标*/ int xv, yv;/*该点在x轴,y轴的速度*/ }; 运动的原理是,先擦去物体先前的轨迹,让物体按其速度移动一段距离,再画出该物体.让我们看到以下代码: gotoxy, ;/*把光标移到指定的坐标*/ printf(" ");/*输出一个空格,把先前的字符擦去*/ 然后我们让物体按其速度运动: += ;/*水平方向按x轴的速度运动*/ += ;/*垂直方向按y轴的速度运动*/ 运动后还要判断物体是否出界,如果出了界,就令物体反弹,即让它下一刻的速度等于现在的速度的相反数.最后打印出这个笑脸: gotoxy, ; printf("%c\b", 2); /*输出ASCII码值为2的"笑脸"字符*/ 怎么样?是不是很有趣呢?不过这个笑脸一直是自己运动,能不能让我们来控制它运动呢?答案是肯定的,让我们继续往下学吧! 3,交互的实现——让我们来控制笑脸运动 这个程序的主要功能是接受按键,如果接收的是方向键,就让笑脸顺着方向移动,如果接收的是ESC键就退出程序,其他按键则忽略处理.接受按键我们用以下两条语句: while (bioskey(1) == 0);/*等待按键*/ key = bioskey(0);/*把接收的按键的键盘码赋给变量key*/ 然后用switch语句来判断按键以及执行相关操作,如下: switch (key) /*对变量key的值进行判断*/ { case UP: /*如果按的是向上键*/ … break; /*让物体向上运动,并退出switch*/

推箱子源代码

#include #include #include #include #include using std::cout; using std::endl; #ifndef SOKOBAN_H_ //防止文件重复包含 #define SOKOBAN_H_ #include using std::queue; //每一步的数据类型 struct node { int bx, by; //箱子的坐标 int px, py; //人的坐标 }; //推箱子类 class Sokoban { private: enum {L = 15, H = 7}; char GameMap[H][L]; //地图 int Pex, Pey; //人的位置 int Boxx, Boxy; //箱子的位置 int Succeed, Prove; //是否成功到目的地, 是否可玩性 int dx[4], dy[4]; //方向数组 protected: char Empty; char People; char Box; char Block; char Target; int dir; //记录按键方向 node s, e; public: Sokoban(); //构建函数 ~Sokoban() {} //析构函数,即为inline //地图初始化函数 void Initial(); //箱子路劲验证函数,参数为箱子坐标(bx,by),人坐标(px,py) void Box_Bfs(int bx, int by, int px, int py); //人路劲验证函数,人所到的目的地(ex,ey)

C语言推箱子小游戏程序

推箱子程序: #include #include #include #define U 1 #define D 2 #define L 3 #define R 4 //按键状态,U:上;D:下;L:左R:右 #define ofx 10 #define ofy 9 //x,y方向偏移量 typedef struct MAP //地图 { int wall[50][2]; //墙 int box[9][2]; //箱子 int des[9][2]; //终点 int overlap[9][2];//箱子与终点的重叠位置 int all,now; //总箱子个数,到位箱子个数 int x,y; //起点 }MAP,*map; //全局变量// int player[2]; //玩家位置 int nextp[2],nextb[2]; //玩家下一步位置,箱子下一步位置 MAP Pass[5]; //关卡数组 map Group,p; //关卡数组指针,当前关卡指针 int level; //关卡等级 int status; //玩家状态 int boxc[9][2],overlapc[9][2]; //箱子状态栈,重叠箱子状态栈 int nowbox; //当前到位箱子个数 int regame; //是否重玩 //声明全部函数// void Pos(int x,int y); //设置光标位置 void welcometogame(); //开始界面 void initgame(); //初始化游戏 void startgame(); //开始游戏 void copybox(int copy[9][2],int b[9][2]); //复制箱子信息 void loadmap(); //加载地图 void printfoverlap(int b[9][2]); //打印重叠箱子位置 void move(); //玩家移动 void trans(int p[2],int q[2]); //状态传递 void inputmap(int a[][2]); //输入地图数据 void gamecircle(); //控制游戏 int main() { system("mode con cols=80 lines=30"); //控制台宽度80,高度30

C语言编写小程序

教你如何使用C语言编写简单小游戏 编辑:匿名发布时间:2011年9月6日留言(0) 纯真童趣的《泡泡堂》,还有武林情仇,笑傲江湖的《剑侠情缘on line》.它是e时代常谈的话题,是交互式娱乐的主力军,是一种高层次的综合艺术,更是一个民族的文化,世界观的全新传播方式.作为游戏玩家的我们,是不是想设计一个属于自己的游戏呢? 爱玩是人的天性,而C语言是我们计算机专业都要学习的一门基础学科.一般来说,是比较枯燥的.那么,我们能不能通过编一些小游戏来提高它的趣味性呢?这样学习程序设计,就不会是一件艰苦,枯燥的事,它变得象电脑游戏一样充满好奇,富有乐趣. 1,总是从Hello,world开始学习编程的第一个程序,一般就是打印一个亲切的词语——"Hell o,world!".让我们来看看这个最简单的C程序: #incolude/*把输入输出函数的头文件包含进来*/ int main() { printf("Hello, world!");/*在屏幕上输出字符串"Hello,world!"*/ return0;/*退出main函数,并返回0*/ } 下面我们发现几个值得改进的地方,1,程序的运行结果一闪而过.2,每执行这个程序一次都能看见上次运行留下的字符.3,我们还希望屏幕输出一个笑脸来欢迎我们.让我们来改进一下这个程序吧! 1,在return语句的前面加一句:getch();,表示按任意键结束.2,在printf语句前用clrscr函数清屏,要使用这个函数和getch函数,需要在程序开头再包含头文件conio.h.3,ASCII码也有许多非常好玩的字符,比如ASCII码值为2的就是一个笑脸,我们可以用printf("%c",2)来输出一个笑脸.现在我们把Hello,world程序改成一个更好看的Hello,world了.下面让我们开始做游戏吧!

推箱子游戏代码

#include #include #include #include #include #include typedef struct winer { int x,y; struct winer *p; }winer; char status [20][20]; char far *printScreen=(char far* )0xB8000000; void putoutChar(int y,int x,char ch,char fc,char bc); void printWall(int x, int y); void printBox(int x, int y); void printBoxDes(int x, int y); void printDestination(int x, int y); void printDestination1(int x,int y,winer **win,winer **pw); void printMan(int x, int y); void init(); winer *initStep1(); winer *initStep2(); winer *initStep3(); winer *initStep4(); void moveBoxSpacetoSpace(int x ,int y, char a); void moveBoxDestoSpace(int x ,int y, char a) ; void moveBoxSpacetoDes(int x, int y, char a); void moveBoxDestoDes(int x, int y, char a); int judge(int x, int y); void move(int x, int y, char a); void reset(int i); void putoutChar(int y,int x,char ch,char fc,char bc) { printScreen[(x*160)+(y<<1)+0]=ch; printScreen[(x*160)+(y<<1)+1]=(bc*16)+fc; } void printWall(int x,int y) { putoutChar(y-1,x-1,219,GREEN,BLACK); status[x][y]='w'; } void printBox(int x,int y) { putoutChar(y-1,x-1,10,WHITE,BLACK); status[x][y]='b'; } void printDestination1(int x,int y,winer **win,winer **pw) {

java推箱子游戏源代码(含推箱子的判断)

第一个Java文件: package xiaoA; import java.awt.Color; import java.awt.HeadlessException; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; public class GameFrame extends JFrame { JPanel zhuobu = new JPanel(); //工人 JLabel worker = null; //箱子 JLabel box = null; //目的地 JLabel goal = null; JLabel[] walls = null; public static final int SPEED = 12; //设置图片大小 int imgSize = 48; public void setImgSize(int imgSize){ this.imgSize = imgSize; } public GameFrame(String title) throws HeadlessException { super(title); //构造方法中调用本类的其它方法 this.initContentPane(); this.addKeyListener(new KeyListener() { //键盘按下事件 public void keyPressed(KeyEvent e) { //[2.5] 使工人可以移动 int xSpeed = 0, ySpeed = 0; switch (e.getKeyCode()) { case KeyEvent.VK_LEFT :

c语言推箱子代码

#i n c l u d e<> #include <> void map1(); void map2(); void map3(); void show(); void move(); void main(int argc,char*argv[]) { time_t a,b; time(&a); system("color 1E"); loop1: { system("cls");d秒\n\t\t\t ",b-a); getch();d秒\n",q-p); printf("\t\t\t\t*******回车重新选择*******\n\t\t\t\t"); getch();

} else { time(&o); if(z=='d') { return; } if(o-p>30) { loop1: system("cls");d秒\n",q-p); printf("\t\t\t\t*******回车重新选择*******\n\t\t\t\t"); getch(); } else { time(&o);

{ return; } if(o-p>30) { loop1: system("cls");d秒\n",q-p); printf("\t\t\t\t*******回车重新选择*******\n\t\t\t\t"); getch(); } else { time(&o); if(z=='d') { return; }

{ loop1: system("cls"); if(*t=='d'){}//遇到d返回 if(*t==75)//左键 { if(c[*x][*y-1]=='#'||c[*x][*y-1]==5&&c[*x][*y-2]==5 ||c[*x][*y-1]==5&&c[*x][*y-2]=='!'){}//遇到墙或推两个箱子else { if(c[*x][*y-1]=='!')//把箱子推出目的地 { if(c[*x][*y-2]!=0){} else { c[*x][*y]=0; *y-=1; c[*x][*y]=1;

一个C语言编写的推箱子游戏源代码 (1)

/* 一个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; 用于在屏幕上输出字符。彩色显示器的字符缓冲区首地址为0xB8000000,每一个字符占2个字节(第一个字节为ASCII值,第二个字节为颜色值),字符模式下屏幕宽80像素,高25像素,一屏可以写80*25个字符。 void putchxy(int y,int x,char ch,char fc,char bc) Putchxy()函数在屏幕上的指定位置输出指定的字符。其中,x、y指明输出的位置,ch表示输出的字符,fc表示输出的字符颜色,bc 表示背景色。 { screen[(x*160)+(y<<1)+0]=ch; /*屏幕输出字符*/ screen[(x*160)+(y<<1)+1]=(bc*16)+fc; /*指定字符颜色fc,背景色bc*/ } /* 定义判断是否胜利的数据结构*/ typedef struct winer { int x,y; struct winer *p; }winer; 定义结构体struct winer用于判断每一关是否已完成。其中x用于存放目的地的横坐标,y用于存放目的地的纵坐标。如果所有表示目的地坐标对应的状态都为“i”,即箱子在目的地,则表示已经过关,可以进入下一关。该结构体的初始化在每一关的初始化时进行。 /* 箱子位置的数据结构*/ typedef struct boxs { int x,y; struct boxs *next; }boxs; /* 在特定的坐标上画墙壁并用数组记录状态的函数*/ void printwall(int x,int y) printwall()用于画墙传入参数x、y指明位置。该函数调用putoutChar()进行输出,以黑色为背景画绿色墙,用小方块表示墙(ASCII值为219)。 { /*以黑色为背景画绿色墙,用小方块表示*/ putchxy(y-1,x-1,219,GREEN,BLACK);

java推箱子游戏源代码

第一个Java文件: import java.awt.Color; import java.awt.HeadlessException; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; public class GameFrame extends JFrame { JPanel zhuobu = new JPanel(); //工人 JLabel worker = null; //箱子 JLabel box = null; //目的地 JLabel goal = null; JLabel[] walls = null; //设置图片大小 int imgSize = 48; public void setImgSize(int imgSize){ this.imgSize = imgSize; } public GameFrame(String title) throws HeadlessException { super(title); //构造方法中调用本类的其它方法 this.initContentPane(); } /** * 设置内容面板 */ void initContentPane() { zhuobu.setBackground(Color.red); zhuobu.setLayout(null); //调用父类的属性和方法 super.setContentPane(zhuobu);

推箱子总结完整(附有源代码)

推箱子复习总结 推箱子基本概括思路: /* 定义二维数组ghouse来记录屏幕上各点的状态, 其中:0表示什么都没有,'b'表示箱子,'w'表示墙壁,'m'表示目的地,'i'表示箱子在目的地。*/ 1.人物设置:即在特定的坐标将人画出。 (1)1个,在ghouse数组中特定的坐标点用printman函数画出小人:如 /* 在特定的坐标上画人的函数*/ void printman(int x,int y) { gotoxy(y,x); _AL=02;_CX=01;_AH=0xa; geninterrupt(0x10); } printman(2+4,4+10);/* 在特定的坐标上画人*/ 2.箱子设置:在特定的坐标点画出箱子,并写下'b' 箱子:3个, 在ghouse数组中特定的三个坐标设置三个箱子并由printbox函数给箱子写下'b':如 /* 在特定的坐标上画箱子并用数组记录状态的函数*/ void printbox(int x,int y) { putchxy(y-1,x-1,10,WHITE,BLACK); /*设置箱子,样式10,前景色白色,背景色黑色*/ ghouse[x][y]='b'; } printbox(3+4,6+10); /*在特定的坐标点写下箱子*/ printbox(3+4,7+10); printbox(4+4,7+10); 3.墙壁设置:在ghouse数组中画出墙壁,并写下'w' 在ghouse数组中画出墙壁,并用printwall函数写下'w':如 (通过for循环实现) /* 在特定的坐标上画墙壁并用数组记录状态的函数*/ void printwall(int x,int y) { putchxy(y-1,x-1,219,MAGENTA,BLACK); /*x,y,219 样式参数,MAGENTA前景色,BLACK 背景色(x,y初始值为1,所以减1)*/ ghouse[x][y]='w'; } for(x=1,y=5;y<=9;y++)/*初始化墙壁,根据printwall函数设置墙,重点:写上‘w’*/ 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++)

推箱子游戏(C语言)

哈尔滨远东理工学院 C语言课程设计论文 题目:推箱子游戏课程设计 姓名:李瑞霖谢桂成? 分院:机器人科学与技术学院 专业:电子信息工程 学号:11030310 11030324 110303? 指导教师:李涛 二0一四年九月五日

推箱子游戏(C语言) 摘要 近年来随着科技的飞速发展,C语言的应用正在不断深入。C语言目前是国际上比较流行的计算机高级编程语言之一,因其简洁、使用方便且具备强大的功能而受到编程人员的普通青睐。它既适合作为系统描述语言,也可用来编写系统软件,还可以用来编写应用软件和设计游戏等。 本文着重分析用C语言实现一个简单的推箱子游戏,旨在介绍推箱子游戏的实现方法,并逐步介绍C语言图形编程的方法和技巧。在C语言编写软件WIN-TC上,涉及软中断、二维数组、键盘操作及图形化函数等方面,显示器中断寄存器的设置、二维数组及结构体的定义、键盘上键值的获取、图形方式下光标的显示和定位,以及部分图形函数的使用实现了一个完整的推箱子游戏界面,界面清晰可见。 关键词: C语言WIN-TC 推箱子

Abstracts With the rapid development of science and technology, in recent years, the C language, C language is unceasingly thorough along with the application. Now more popular international advanced computer programming language, it's a simple, easy to use and powerful support of ordinary programmers. It suits as a system description language, can also be used to write the system software, application software can also be used to write and design the game. This paper mainly analysis using C language to achieve a simple Sokoban game aimed at introducing the Sokoban game implementation method, and gradually C graphics programming methods and techniques are introduced. In C language software, WIN - TC, related softirqs, two-dimensional array, keyboard, and graphical functions, etc., according to interrupt register Settings, two-dimensional array, and the structure defined access key on the keyboard, the graphics mode, the cursor displays and positioning, and some of the graphics functions is used to implement a complete Sokoban game interface, the interface can be clearly seen. Key : C language WIN - TC PushBox

Java面向对象推箱子源代码(可扩展)

Java面向对象实现推箱子的源代码 目录 一、首先: (1) 二、以下为工程中各个类的源代码: (1) 1、Box (1) 2、GameMainTest (3) 3、Man (5) 4、Map (6) 5、MovingException (7) 6、Out (8)

一、首先: 在eclipse中新建一个工程,包名和类名(工程结构)如下: 二、以下为工程中各个类的源代码: 源代码按对应的类名复制粘贴进去即可。 1、Box package tuixiangzi; import java.util.Random; publicclass Box { privatestatic Random ran = new Random(); privatestaticint x = ran.nextInt(10); //箱子所在的位置(随机) privatestaticint y = ran.nextInt(10); //箱子所在的位置(随机) privateint[][]map = Map.getArray(); privateint h = map.length - 1; privateint l = map[h].length - 1; /** * 箱子左移 */ publicvoid boxLMove()throws MovingException{ if(y-1 < 0) { thrownew MovingException("You Can't Moving Left!"); } if(Man.getX() == x&&Man.getY() == y) { y=(y-1);

推箱子FLASH小游戏的设计与实现(含flash源文件)

推箱子FLASH小游戏的设计与实现(含flash源文件) 推箱子FLASH小游戏的设计与实现(含flash源文件)(11500字) 摘要:随着现代科技的高速发展,短短几十年,电脑游戏得到迅猛发展。电脑游戏充分利用多媒体网络优势,拓宽了传统游戏的界限,给人们带来全新的体验。在这些游戏中,FLASH游戏以其好看的动画,绚丽... 推箱子小游戏的设计与实现(含flash源文件)(字)

摘要:随着现代科技的高速发展,短短几十年,电脑游戏得到迅猛发展。电脑游戏充分利用多媒体网络优势,拓宽了传统游戏的界限,给人们带来全新的体验。在这些游戏中,FLASH 游戏以其好看的动画,绚丽的声光效果,高度的通畅性,以及很强的可玩性,而受到广大青少年的青睐。
本文主要针对目前网络流行的FLASH小游戏——推箱子游戏的设计与实现进行了浅要分析,采用FLASH  8进行游戏设计以及解决设计中遇到的一系列问题,以各游戏模块为线索,详细说明了FLASH  8的基本操作和脚本编程,深入浅出地对FLASH基本功能和脚本编程进行全面细致的讲解,涵盖了FLASH在开发过程中的一些基本技术,充分展示了FLASH的一些经典特色。该游戏既能锻炼思维的严密性,又有很多乐趣。
关键词:结构;模块;流程;设计

Design And Implementaion Of Sokokan Flash Game
Abstract:With the rapid development of modern science and technology, only lasts for a few decades, computer games rapid development. Computer games make full use of multimedia network advantage, and widened the boundaries of traditional games, people brings a whole new experience. In these games, FLASH game with its nice animation, gorgeous effects of sound, high unobstructed sex, and strong can play sex, by the broad adolescent's favor.
     This paper mainly aiming at the network popular FLASH get-away drama -- pushed box game the design and implementation of the shallow analysis, using FLASH 8 games design and solve a series of problems encountered in the design, with each game module for clues, detail the FLASH 8 basic operation and scripting, explaining the basic function and scripts to FLASH on the thorough and careful programming explained that covers a FLASH in the process of developing the basic technology, displayed to the full FLASH for some of the classic characteristic. This game can exercise thinking of rigor, and lots of fun.
Keywords: structure;modules;process;design

游戏设计
游戏设计的任务是:在游戏分析提出的游戏逻辑模型结构的基础上,科学合理的进行物理模型的设计。具体的说,就是根据游戏逻辑模型提出的各项功能要求,结合实际的设计条件,详细的设计出游戏的处理流程和基本结构,并为游戏实施阶段的各项工作准备还全部必要的技术资料和有关文件。游戏模型分为逻辑模型和物理模型。逻辑模型主要确定系统做什么,而物理模型则主要解决这样做的问题,前者是游戏设计的任务。经过游戏设计,设计人员应能为程序员提供完整、清楚的设计文档,并做出解释[17]。

相关文档
相关文档 最新文档