
分类: 电脑/网络 >> *** 作系统/系统故障
问题描述:
请写一个小游戏程序,程序开始时从文件读入一批单词,文件的名字由命令行得到。程序运行中每次从这些单词中随机地选出一个,要求游戏者猜。做游戏者反复询问某些字母是否出现在单词里,程序给出回答。直至人猜出这个单词(或者放弃)。
解析:
#include <stdioh>
#include <stdlibh>
#include <stringh>
#include <timeh>
#define max 1024
#define min 50
void main()
{
FILE fp;
char c;
int i=0;
int j=0;
读文件
char str[max][min]={0};
if((fp=fopen("wordtxt","r"))==NULL)
{
printf("can not open file wordtxt\n");
exit(0);
}
c=fgetc(fp);
while(c!=EOF)
{
if(c!=' ')
{
str[i][j]=c;
j++;
}
else
{
i++;
j=0;
}
c=fgetc(fp);
}
产生随机数,0-i
srand((unsigned int)time(NULL));
int n=rand()/20;
while((n<0)||(n>i))
{
n=rand()/20;
}
printf("取得的随机数是第%d个单词\n",n);
检查单词
printf("#######guess begin######\n");
printf("\n");
char gs;
char con='y';
while(con=='y')
{
printf("请输入字母,# 号表示结束\n");
scanf("%c",&gs);
getchar();
char gue[min]={0};
int flag=0;
while(gs!='#')
{
for(int i=0;str[n][i]!='\0';i++)
{
if(str[n][i]==gs)
{
printf("字母%c在单词中\n",gs);
flag=1;
break;
}
}
if(!flag)
{
printf("字母%不在单词中\n",gs);
}
printf("请输入字母,# 号表示结束\n");
scanf("%c",&gs);
getchar();
}
printf("请输入你猜的单词\n");
scanf("%s",gue);
getchar();
if(!(strcmp(str[n],gue)))
{
printf("恭喜你,猜对了!\n");
}
else
{
printf("很遗憾,你猜错了\n");
}
printf("continuey is guess again,press any key to end \n");
scanf("%c",&con);
getchar();
}
fclose(fp);
}
喜欢可以与我交流,86711527
我的想法是,在各个身体部位的运动当中,后一个方块的下一个位置坐标,总是前一个方块的x1,y1,
也就是说后面的方块总是按前面的方块的轨迹运动
而且第一个方块是不能回头的,所以用到if((a[0]x0!=(a[1]x0-dx)))这一句。
我也想编类似贪吃蛇的游戏别人写的没有没有注释,看不太懂所以我先依自已的想法,写了
一个小实验品,写得差不多了,但是很多细节处理不好!!如:我没有写如果蛇碰到自已会死;还有
就是食物随机出现的位置有可能出现在身体正在的位置,这样的话就看不见它了。。等等。
/
#include"stdioh"
#include"graphicsh"
#include"stdlibh"
#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(); /游戏开始前画出第一个要吃掉的方块/
boxx=300+10(rand()%14+1);
boxy=100+10(rand()%26+1);
boxlive=1;
rectangle(boxx,boxy,boxx+10,boxy+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(boxlive==0) /当食物不存在时,随机位置增加一食物/
{
boxx=10(rand()%30+15);
boxy=10(rand()%30+8);
rectangle(boxx,boxy,boxx+10,boxy+10);
boxlive=1; /食物变为存在/
}
/当蛇头在食物的正左方且食物存在时,食物被吃掉/
if(((a[0]x0==(boxx-10))&&(a[0]y0==boxy))&&(boxlive==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=boxx; /把食物当做身体加入蛇头/
a[0]y0=boxy;
a[0]x1=a[0]x0;
a[0]y1=a[0]y0;
N++; /身体节数加1/
boxlive=0; /食物消失/
}
/贪吃蛇/
#include<stdioh>
#include<timeh>
#include<conioh>
#include<stdlibh>
inthead=3,tail=0;
intmain()
{
inti,j,k=0;
intzuobiao[2][80];
longstart;
intdirection=77;
intgamespeed;
inttimeover;
intchange(charqipan[20][80],
intzuobiao[2][80],
chardirection);
zuobiao[0][tail]=1;
zuobiao[1][tail]=1;
zuobiao[0][1]=1;
zuobiao[1][1]=2;zuobiao[0
[2]=1;
zuobiao[1][2]=3;
zuobiao[0][head]=1;
zuobiao[1][head]=4;
/处理棋盘/
charqipan[20][80];
//定义棋盘
for(i=0;i<20;i++)
for(j=0;j<80;j++)
qipan[i][j]='';//初始化棋盘
for(i=0;i<80;i++)
qipan[0][i]='_';
for(i=0;i<20;i++)
qipan[i][0]='|';
for(i=0;i<20;i++)
qipan[i][79]='|';
for(i=0;i<80;i++)
C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
是不是graphicsh头文件找不到?这个头文件里的图形函数就都用不了,因为cfree没有这个头文件,哪怕你拷过去一个也不行。
要是非要用图形函数,用win-tc可以,不过这个编译器确实有点老了。
分类: 电脑/网络 >> 程序设计 >> 其他编程语言
问题描述:
十万火急~~~~明天要交作业
解析:
我写一个猜数字游戏吧!:
/猜数字游戏:计算机随机给出一个1~100之间的数,你输入一个数,程序判断是否是程序
选定的那个数字,如果不正确,程序会告诉你大于或者小于这个数的提示,如:程序选择是7,你输入8,则提示大于了,给你猜10次/
#include <stdioh>
main()
{int i,guess,number;
number=abs(rand()%100)+1;
printf("猜数字:");
for(i=1;i<=10;i++)
{scanf("%d",&guess);
if (guess==number)
{
printf("正确!\n");
break;}
else
if (guess < number)
printf("小了!\n");
else
printf("大了\n");
}
以上就是关于用C语言编猜单词小游戏全部的内容,包括:用C语言编猜单词小游戏、C程序小游戏、用C语言编写的小游戏代码是什么等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)