dnf安图恩raid抗性表:C程序小游戏

来源:百度文库 编辑:高考问答 时间:2024/04/30 03:25:14
C语言学了一年了 小弟不才 没学好 我们学的是谭浩强的《C程序设计》第二版 大一的 期末考了 要设计个小程序 我选的是小游戏 不要太好 俺老师说了 不让从网上下载 俺就来这求救各位高手了 不能太好呵 中等长度 最好带个文档 1.题目意义和设计思想2采用的主要技术、遇到的难点和解决方法3实现的主要功能和系统结构4核心算法描述和相关技术说明5总结和体会 能帮上忙的小弟诚心感谢 好的追加50分啊 多谢了
写上游戏名称吧 比如贪吃蛇什么的 文档帮我弄个吧 非常谢谢 急!!!

c语言怎么编游戏
http://post.baidu.com/f?kz=4276396
扫雷游戏
http://post.baidu.com/f?kz=3651013
做游戏常用到的一些函数
http://post.baidu.com/f?kz=5416486
赛车游戏的完整图
http://post.baidu.com/f?kz=5417016
简单打飞碟小游戏
http://post.baidu.com/f?kz=3650980
坦克大战小游戏
http://post.baidu.com/f?kz=3650938
吃豆小游戏
http://post.baidu.com/f?kz=3651039

#include “stdlib.h“
#include “stdio.h“
void rand_str(char *p) /*产生随机数字*/
{ int i,t,j;
char ch;
for(i=0;i<4;i++)
{ t=1;
randomize();
ch=rand()%10+’0’;
for(j=i-1;j>=0;j--)
if(p[j]==ch)
{t=0;break;}
if(t==1)
p[i]=ch;
else
i--;
}
/* 输出产生的随机数字*/
/* for(i=0;i<4;i++)
printf(“%c“,p[i]);
printf(“\n“);
*/

}
b_space() /*删除输入数字*/
{
int i;
for (i=0;i<8;i++)
printf(“\b \b“);

}
quit() /*退出程序*/
{ int i;
char ch;
printf(“按 Y 键退出,按任意键取消。“);
ch=getch();
if (ch==’y’||ch==’Y’)
exit(0);
else
for(i=0;i<27;i++)
printf(“\b \b“);

}
in_str(char *p) /*输入信息,包括数字和控制键*/
{ int i,j,t;
char ch;
for(i=0;i<4;i++)
{ t=1;
ch=getch();
if (ch==’\010’&&i>0)
{
b_space(); /*删除输入数字*/
i=i-2;
continue;
}
else if (ch==’\033’)
{ quit(); /*退出程序*/
i--;
continue;
}
else if (ch>=’0’&&ch<=’9’)
p[i]=ch;
else
{ i--;
continue;
}
for (j=i-1;j>=0;j--)
if (p[i]==p[j])
{ t=0;
}
if(t==1)
{ printf(“%c\t“,p[i]);

}
else
i--;
}
}

pom_str(char *p,char *q) /*比较两个数组*/
{ int i,j,a,b;

a=0;
b=0;
for(i=0;i<4;i++)
for (j=0;j<4;j++)
{ if (p[i]==q[j])
if (i==j)
a++;
else
b++;
}
if(a==4)
printf(“good“);

else
printf(“%dA%dB\n“,a,b);
return a;
}
printf_m() /*帮助信息的输出*/
{ printf(“1.输入的4个数字必须不同。\n“);
printf(“2.按Esc键可以退出此程序。\n“);
printf(“3.按Back Space键可以删除输入的数字。\n\n“);
}

main()
{ int t=0,i,n=0;
char str1[4],str2[4];
clrscr();
printf_m(); /*输出帮助信息*/
printf(“请稍侯!程序载入中----“);
rand_str(str1);
for(i=0;i<26;i++)
printf(“\b \b“);
printf(“请输入4个数字:\n\n“);
while(t!=4)
{ in_str(str2);
t=pom_str(str1,str2);
n++;
}
printf(“你一共猜了%d次“,n);
getch();
}
还想要好的可以联系我,msn:kyako_jessica@hotmail.com

错误太多

喜欢可以与我交流,86711527
我的想法是,在各个身体部位的运动当中,后一个方块的下一个位置坐标,总是前一个方块的x1,y1,
也就是说后面的方块总是按前面的方块的轨迹运动 .
而且第一个方块是不能回头的,所以用到if((a[0].x0!=(a[1].x0-dx))).......这一句。

我也想编类似贪吃蛇的游戏.....别人写的没有没有注释,看不太懂..所以我先依自已的想法,写了
一个小实验品,写得差不多了,但是很多细节处理不好!!如:我没有写如果蛇碰到自已会死;还有
就是食物随机出现的位置有可能出现在身体正在的位置,这样的话就看不见它了。。等等。
*/

#include"stdio.h"
#include"graphics.h"
#include"stdlib.h"

#define RIGHT 0x4d00
#define LEFT 0x4b00
#define UP 0x4800
#define DOWN 0x5000
#define ESC 0x011b

int dx; /*移动时X轴身体变化距离*/
int dy; /*移动时Y轴身体变化距离*/
int N=4; /*身体节数*/

/*存放身体每一部份的信息*/
struct body
{
int x0,y0; /*每个方块的左上角的坐标,当物体移动时它最先改变*/
int x1,y1; /*每个块的左上角坐标,但主要是为了给它后面的方块指定他下一位置的坐标*/
}a[80]={{300,100,300,100},
{290,100,290,100}, /*定义了四块身体*/
{280,100,280,100},
{270,100,270,100}
};

/*存放每一块食物的信息*/
struct boX
{
int x; /*食物左上角横坐标*/
int y; /*食物左上角纵坐标*/
int live; /*食物是否存在,1:存在,0:不存在*/
}box; /*定义一个食物变量*/

/*初始化图形*/
void initgr()
{
int gd=DETECT,gm;
initgraph(&gd,&gm,"");
setcolor(YELLOW);
setlinestyle(0,0,3);
rectangle(200,150,440,200);
setcolor(7);
settextstyle(0,0,4);
setcolor(9);
outtextxy(240,160,"SNAKE");
settextstyle(0,0,1);
setcolor(7);
outtextxy(280,220,"By UFOZH");
outtextxy(230,240,"press any key to continue...");
getch();
cleardevice();
setfillstyle(1,BLUE);
bar(150,80,450,380);
}

/*****************************************************************************/
main()
{
int n,i;
int key; /*存放按键值*/
dx=10; /*每个方块每次移动长度*/
dy=10;

initgr();

setlinestyle(0,0,1);
setcolor(WH99vE);
randomize(); /*游戏开始前画出第一个要吃掉的方块*/
box.x=300+10*(rand()%14+1);
box.y=100+10*(rand()%26+1);
box.live=1;
rectangle(box.x,box.y,box.x+10,box.y+10);

/*默认刚开始条形是向右移动*/
while(!kbhit())
{
a[0].x0=a[0].x0+dx;
for(i=1;i<N;i++)
{
a[i].x0=a[i-1].x1;
a[i].y0=a[i-1].y1;
}
setcolor(BLUE);
for(n=0;n<4;n++)
rectangle(a[n].x1,a[n].y1,a[n].x1+dx,a[n].y1+dy);
setcolor(WH99vE);
delay(3000);
for(n=0;n<4;n++)
rectangle(a[n].x0,a[n].y0,a[n].x0+dx,a[n].y0+dy);
for(i=0;i<N;i++)
{
a[i].x1=a[i].x0;
a[i].y1=a[i].y0;
}
delay(50000);
}

key=bioskey(0);
while(1)
{
switch(key)
{
case RIGHT:if((a[0].x0!=(a[1].x0-dx))) /*当第一个方块不是在第二个的正左边时,条形向右移,否则执行case LEFT*/
{
while(!kbhit())
{
if(a[0].x0<150||a[0].x0>450||a[0].y0<80||a[0].y0>380) /*当第一个方块出个任四个界时,退出*/
exit(0);

if(box.live==0) /*当食物不存在时,随机位置增加一食物*/
{
box.x=10*(rand()%30+15);
box.y=10*(rand()%30+8);
rectangle(box.x,box.y,box.x+10,box.y+10);
box.live=1; /*食物变为存在*/
}

/*当蛇头在食物的正左方且食物存在时,食物被吃掉*/
if(((a[0].x0==(box.x-10))&&(a[0].y0==box.y))&&(box.live==1))
{
for(i=N;i>=1;i--) /*把现有的身体统一向后移一个单位*/
{
a[i].x0=a[i-1].x0;
a[i].x1=a[i-1].x1;
a[i].y0=a[i-1].y0;
a[i].y1=a[i-1].y1;
a[0].x0=box.x; /*把食物当做身体加入蛇头*/
a[0].y0=box.y;
a[0].x1=a[0].x0;
a[0].y1=a[0].y0;
N++; /*身体节数加1*/
box.live=0; /*食物消失*/
}

我也给一个老鼠迷宫的
void chushi();
void Print(int intArr[24][24]);
inline void wait();
void person(int intArr[24][24]);
void yidong(int intArr[24][24]);
int yidong1(int intArr[24][24]);
int intX,intY;
int main(int argc, char* argv[])
{
int intArr[24][24]={{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
{0,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,1,0,0,0,1,1,1},
{1,0,1,0,0,0,0,0,1,1,0,0,0,1,1,1,1,1,0,0,0,1,0,1},
{1,0,1,0,0,0,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,1,0,1},
{1,0,0,0,0,0,0,1,1,0,0,0,1,0,0,0,1,1,0,1,0,1,0,1},
{1,1,0,1,0,0,1,1,0,0,1,1,0,0,0,1,1,0,0,1,0,0,1,1},
{1,1,1,0,0,0,0,0,0,1,1,1,1,1,0,1,0,1,1,1,1,0,1,1},
{1,1,0,1,1,1,1,0,0,0,0,0,0,1,0,1,1,0,1,0,1,0,1,1},
{1,1,0,1,0,0,1,1,0,0,1,1,0,1,1,0,0,1,1,1,1,0,0,1},
{1,0,1,1,0,0,1,1,1,0,0,0,1,0,1,1,0,0,0,0,0,0,1,1},
{1,1,0,1,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,1,1},
{1,1,1,0,1,1,1,1,1,0,1,1,0,0,0,0,0,1,0,0,0,1,1,1},
{1,1,1,1,0,0,1,0,0,0,0,0,1,1,1,0,0,0,0,0,0,1,0,1},
{1,0,1,1,1,0,1,1,0,0,0,1,1,1,1,0,1,0,0,0,1,1,0,1},
{1,1,0,0,1,0,1,1,0,0,1,0,1,1,0,0,1,1,1,0,0,0,1,1},
{1,1,0,1,1,0,1,0,0,1,0,1,1,0,1,0,1,0,1,0,0,1,1,1},
{1,0,0,0,0,1,0,1,0,1,0,1,0,0,0,0,0,1,1,1,0,0,0,1},
{1,0,0,0,0,1,1,1,1,1,0,1,1,0,0,0,1,0,1,1,0,0,0,1},
{1,0,0,1,0,0,0,0,1,1,1,1,0,1,1,1,0,1,0,1,1,1,0,1},
{1,1,0,1,0,1,0,0,1,1,0,0,0,0,1,0,0,0,1,0,1,0,0,1},
{1,1,0,1,0,0,0,1,1,0,0,0,1,0,1,1,1,0,1,1,0,0,0,1},
{1,0,1,0,0,0,1,1,1,0,0,0,0,0,0,0,1,0,0,0,1,1,0,1},
{1,1,1,0,1,0,0,1,1,0,1,1,0,0,0,0,1,0,0,1,1,0,0,0},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}};
intX=22,intY=23;
chushi();
person(intArr);
Print(intArr);
char charA=getch();
if(charA=='q')
int intA=yidong1(intArr);
else
yidong(intArr);
system("cls");
cout<<"you are very good"<<endl;
return 0;
}

void Print(int intArr[24][24])
{
for(int intI=0;intI<24;intI++)
{
for(int intJ=0;intJ<24;intJ++)
{
if(intArr[intI][intJ]==0)
printf("%c",0);
else if(intArr[intI][intJ]==1)
printf("%c",1);
else if(intArr[intI][intJ]==2)
printf("%c",2);
else
printf("%c",0);
}
cout<<endl;
}
}

void person(int intArr[24][24])
{
intArr[intX][intY]=2;
}

int yidong1(int intArr[24][24])
{
if(intX==1&&intY==0)
{
return 0;
}
intArr[intX][intY]=3;
system("cls");
if(intArr[intX-1][intY]==0)
{
intX-=1;
person(intArr);
Print(intArr);
wait();
yidong1(intArr);
}
else if(intArr[intX][intY-1]==0)
{
intY-=1;
person(intArr);
Print(intArr);
wait();
yidong1(intArr);
}
else if(intArr[intX+1][intY]==0)
{
intX+=1;
person(intArr);
Print(intArr);
wait();
yidong1(intArr);
}
else if(intArr[intX][intY+1]==0)
{
intY+=1;
person(intArr);
Print(intArr);
wait();
yidong1(intArr);
}
else
{
intArr[intX][intY]=4;
if(intArr[intX-1][intY]==3)
{
intX-=1;
person(intArr);
Print(intArr);
wait();
yidong1(intArr);
}
else if(intArr[intX][intY-1]==3)
{
intY-=1;
person(intArr);
Print(intArr);
wait();
yidong1(intArr);
}
else if(intArr[intX+1][intY]==3)
{
intX+=1;
person(intArr);
Print(intArr);
wait();
yidong1(intArr);
}
else if(intArr[intX][intY+1]==3)
{
intY+=1;
person(intArr);
Print(intArr);
wait();
yidong1(intArr);
}
}

}

void yidong(int intArr[24][24])
{
char down;
while(1)
{
down=getch();
system("cls");
switch(down)
{
case 'i':
if(intArr[intX-1][intY]==0)
{
intArr[intX][intY]=0;
intX-=1;
person(intArr);
Print(intArr);
}
else
{
person(intArr);
Print(intArr);
}
break;
case 'j':
if(intArr[intX][intY-1]==0)
{
intArr[intX][intY]=0;
intY-=1;
person(intArr);
Print(intArr);
}
else
{
person(intArr);
Print(intArr);
}
break;
case 'k':
if(intArr[intX+1][intY]==0)
{
intArr[intX][intY]=0;
intX+=1;
person(intArr);
Print(intArr);
}
else
{
person(intArr);
Print(intArr);
}
break;
case 'l':
if(intArr[intX][intY+1]==0)
{
intArr[intX][intY]=0;
intY++;
person(intArr);
Print(intArr);
}
else
{
person(intArr);
Print(intArr);
}
break;
default:
person(intArr);
Print(intArr);
break;
}
if(intX==1&&intY==0)
break;
}
}

void wait()
{
for(int intI=0;intI<100000000;intI++)
{int intN=0;intN*=2;}
}

void chushi()
{
printf(" ====================================================\n");
printf(" 老鼠迷宫游戏\n");
printf(" 操作说明:\n");
printf(" 1.自动寻找路径:\n");
printf(" 在迷宫地图出现后按下Q键则自动行走\n");
printf(" 2.手动寻找路径:\n");
printf(" I: 上 K: 下\n");
printf(" J: 左 L: 右\n");
printf(" 按下任意键开始游戏:\n");
printf(" ====================================================\n");
char charA=getch();
system("cls");
}

不知道能不能在TC下运行,我是在C++下运行的!要在TC下运行的话你把变量申请和变量的初始化分开,再把COUT和CIN改为C风格的