C语言扫雷游戏源代码文档格式.docx

上传人:b****1 文档编号:429236 上传时间:2023-04-28 格式:DOCX 页数:33 大小:22.75KB
下载 相关 举报
C语言扫雷游戏源代码文档格式.docx_第1页
第1页 / 共33页
C语言扫雷游戏源代码文档格式.docx_第2页
第2页 / 共33页
C语言扫雷游戏源代码文档格式.docx_第3页
第3页 / 共33页
C语言扫雷游戏源代码文档格式.docx_第4页
第4页 / 共33页
C语言扫雷游戏源代码文档格式.docx_第5页
第5页 / 共33页
C语言扫雷游戏源代码文档格式.docx_第6页
第6页 / 共33页
C语言扫雷游戏源代码文档格式.docx_第7页
第7页 / 共33页
C语言扫雷游戏源代码文档格式.docx_第8页
第8页 / 共33页
C语言扫雷游戏源代码文档格式.docx_第9页
第9页 / 共33页
C语言扫雷游戏源代码文档格式.docx_第10页
第10页 / 共33页
C语言扫雷游戏源代码文档格式.docx_第11页
第11页 / 共33页
C语言扫雷游戏源代码文档格式.docx_第12页
第12页 / 共33页
C语言扫雷游戏源代码文档格式.docx_第13页
第13页 / 共33页
C语言扫雷游戏源代码文档格式.docx_第14页
第14页 / 共33页
C语言扫雷游戏源代码文档格式.docx_第15页
第15页 / 共33页
C语言扫雷游戏源代码文档格式.docx_第16页
第16页 / 共33页
C语言扫雷游戏源代码文档格式.docx_第17页
第17页 / 共33页
C语言扫雷游戏源代码文档格式.docx_第18页
第18页 / 共33页
C语言扫雷游戏源代码文档格式.docx_第19页
第19页 / 共33页
C语言扫雷游戏源代码文档格式.docx_第20页
第20页 / 共33页
亲,该文档总共33页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

C语言扫雷游戏源代码文档格式.docx

《C语言扫雷游戏源代码文档格式.docx》由会员分享,可在线阅读,更多相关《C语言扫雷游戏源代码文档格式.docx(33页珍藏版)》请在冰点文库上搜索。

C语言扫雷游戏源代码文档格式.docx

floatRandom();

voidHave(intsum,intx,inty,intxx,intyy);

voidHelp();

voidCoread();

voidDdraw2(intx,inty);

 

/*下面是主函数*/

main()

{

intmode=VGAHI,devices=VGA;

/*图形模式初始化的变量*/

charams;

/*鼠标操作中的标志变量*/

intxms,yms,bms;

/*鼠标的状态变量*/

inti,j,k,k1=0;

/*i,j,k是循环变量*/

intx=9,y=9,flags=0;

/*x,y矩阵的大小*/

intsum=10;

/*sum盘面的雷的总数目,是个x,y的函数*/

intx1=0,y1=0;

/*用于记录光标当前的位置*/

intx11=0,y11=0;

/*暂时保存鼠标位置的值*/

intsizel=10;

/*脸的大小*/

intcflags=1;

/*这是菜单操作标志变量,没有弹出1,弹出0*/

structtimet1={0,0,0,0};

/*时间结构体,头文件已定义*/

intco[3];

/*暂时纪录历史纪录*/

voidfar*Map;

/*用于保存鼠标图片*/

charname[3][20];

/*名字字符串,用于记录名字*/

FILE*p;

/*文件指针用于文件操作*/

Msinit();

/*鼠标初始化*/

/*registerbgidriver(EGAVGA_driver);

initgraph(&

devices,&

mode,"

C:

\\tc"

);

/*图形模式初始化*/

/*为图片指针分配内存*/

if((Map=farmalloc(imagesize(0,0,20,20)))==NULL)/*图片的大小是20*20*/

{

printf("

Memoryererr!

\n"

Pressanykeytoout!

exit

(1);

}

/*用于检验文件是否完整*/

while((p=fopen("

score.dat"

"

r"

))==NULL)/*如果不能打开就新建一个*/

if((p=fopen("

w"

))==NULL)/*如果不能新建就提示错误并推出*/

Thefilecannotopen!

Presssanykeytoexit!

getch();

/*写入初始内容*/

fprintf(p,"

%d%d%d,%s\n%s\n%s\n"

999,999,999,"

xiajia"

"

fclose(p);

/*暂时读出历史纪录。

并用co[3]纪录*/

fscanf(p,"

%d%d%d,"

&

co[0],&

co[1],&

co[2]);

for(i=0;

i<

3;

i++)

%s\n"

name[i]);

Setmouse(1,1,615,460);

/*设置鼠标的活动范围*/

pix=250-x*size/2;

/*计算地雷按钮矩阵的左边*/

bss:

b[0]='

1'

/*游戏开始和重来的切入点*/

flags=0;

/*测试中这个变量好像没有作用,但是为了逻辑的完整性暂时保留*/

k=0;

Eflags=0;

tt=0;

cleardevice();

/*清屏*/

setbkcolor(LIGHTCYAN);

30;

i++)/*盘面初始化*/

for(j=0;

j<

16;

j++)

pan[i][j]=0;

pan1[i][j]=0;

for(;

)/*用于生成雷的盘面情况*/

i=(int)(x*Random());

j=(int)(y*Random());

if(pan[i][j]==0)

pan[i][j]=9;

k=k+1;

if(k==sum)break;

}

for(i=0;

x;

i++)/*用于统计各点的周边情况*/

for(j=0;

y;

if(pan[i][j]==0)/*只有没有雷的才需要处理*/

if(i-1>

=0&

&

j-1>

pan[i-1][j-1]==9)pan[i][j]++;

if(j-1>

pan[i][j-1]==9)pan[i][j]++;

if(i+1<

x&

pan[i+1][j-1]==9)pan[i][j]++;

pan[i-1][j]==9)pan[i][j]++;

pan[i+1][j]==9)pan[i][j]++;

j+1<

y&

pan[i-1][j+1]==9)pan[i][j]++;

if(j+1<

pan[i][j+1]==9)pan[i][j]++;

pan[i+1][j+1]==9)pan[i][j]++;

if(sum==10)/*画底座*/

Draw(170,1,162,200);

setcolor

(1);

outtextxy(175,5,"

Game()"

setcolor(4);

G"

}/*小*/

else

if(sum==40)

Draw(115,1,272,307);

outtextxy(120,5,"

Game(G)"

}/*中*/

if(sum==99)

Draw(40,1,470,307);

outtextxy(45,5,"

}/*大*/

/*显示提示信息*/

outtextxy(100,350,"

:

Help."

H"

outtextxy(200,350,"

/:

exit."

Q"

outtextxy(220,350,"

ESC"

outtextxy(330,350,"

cores."

R"

Facedraw(250,30,sizel,2);

/*显示控制按钮,脸型*/

i++)/*这一段用于描绘盘面*/

Draw(i*size+pix,j*size+piy,size,size);

Have(sum,pix+20,30,x,y);

/*各项的初始显示*/

setfillstyle(1,0);

bar(460-pix,25,490-pix,40);

outtextxy(465-pix,30,"

000"

/*下面这一段用于接收用户的控制,并做出反应*/

ams=Msread(&

xms,&

yms,&

bms,t1,k);

/*读取鼠标状态*/

/*下面一段用于保存并记录鼠标图片*/

if(flags!

=0)

putimage(x11,y11,Map,COPY_PUT);

x11=xms;

y11=yms;

flags=1;

/*这里插入菜单操作*/

if((xms>

=pix-10&

xms<

=pix+26&

yms>

=2&

yms<

=14&

bms==1)||ams=='

g'

||ams=='

G'

)/*点中菜单的判断*/

Draw(pix-10,14,100,88);

/*画菜单*/

cflags=0;

/*下面显示菜单项*/

outtextxy(pix-4,19,"

Restar(R)"

R"

outtextxy(pix-4,30,"

Easy(E)"

E"

outtextxy(pix-4,41,"

Nomall(N)"

N"

outtextxy(pix-4,52,"

Hard(H)"

H"

outtextxy(pix-4,63,"

Corse(C)"

C"

outtextxy(pix-4,74,"

Help(L)"

L"

outtextxy(pix-4,85,"

Quit(Q)"

Q"

bms=0;

}/*完成菜单的描绘*/

/*这里是为了完全实现鼠标控制才加入的内容*/

if(Eflags==2&

(bms!

=0||ams!

=-1))

gotobss;

/*下面实现菜单的功能,每一项响应一个菜单项*/

if(cflags==0)

=pix-6&

=pix+85&

=17&

=28&

bms==1)||(ams=='

r'

R'

))/*下面依次响应菜单中各项*/

cflags=1;

=39&

e'

E'

x=9;

y=9;

sum=10;

=50&

n'

N'

x=16;

y=16;

sum=40;

=61&

h'

H'

x=30;

sum=99;

pix=250-x*size/2+25;

=72&

c'

C'

Coread();

=83&

l'

L'

Help();

=94&

q'

Q'

||ams==27)

closegraph();

farfree(Map);

if(bms!

}/*结束菜单功能的实现*/

/*在笑脸按钮处单击时重新开始*/

if(cflags!

xms>

=250-sizel-2&

yms>

=30-sizel-2&

=250+sizel+2&

=30+sizel+2&

bms==1)

if(Eflags==0&

cflags!

xms-pix>

yms-piy>

pix+x*size&

piy+y*size)/*111判断*/

x1=(int)((xms-pix)/size);

/*计算鼠标目前的按钮位置*/

y1=(int)((yms-piy)/size);

if(ams==-1&

bms==1&

pan1[x1][y1]==0)/*单击鼠标左键*/

if(k==0)/*k这里判断是否是第一次按下.0:

不计时,1:

开始计时*/

gettime(&

t1);

k=1;

if(pan[x1][y1]!

=9)

Draw1(x1,y1);

Open(x,y);

Dead(sizel,x,y);

bms==2&

pan1[x1][y1]==0)/*单击鼠标右键*/

delay(100);

setcolor(10);

circle(x1*size+pix+7,y1*size+piy+7,4);

pan1[x1][y1]=2;

pan1[x1][y1]==2)/*单击鼠标右键*/

Draw(x1*size+pix,y1*size+piy,size,size);

pan1[x1][y1]=0;

}/*相当于鼠标右击*/

bms==3&

pan1[x1][y1]==1)

{/*相当于鼠标双击,有效性判断*/

i=0;

if(x1-1>

y1-1>

pan1[x1-1][y1-1]==2)i++;

if(y1-1>

pan1[x1][y1-1]==2)i++;

if(x1+1<

pan1[x1+1][y1-1]==2)i++;

pan1[x1-1][y1]==2)i++;

pan1[x1+1][y1]==2)i++;

y1+1<

pan1[x1-1][y1+1]==2)i++;

if(y1+1<

pan1[x1][y1+1]==2)i++;

pan1[x1+1][y1+1]==2)i++;

if(i==pan[x1][y1])/*有效*/

pan1[x1-1][y1-1]!

=2)

if(pan[x1-1][y1-1]!

=9)

Draw1(x1-1,y1-1);

else

pan1[x1][y1-1]!

=2)

if(pan[x1][y1-1]!

Draw1(x1,y1-1);

pan1[x1+1][y1-1]!

if(pan[x1+1][y1-1]!

Draw1(x1+1,y1-1);

pan1[x1-1][y1]!

if(pan[x1-1][y1]!

Draw1(x1-1,y1);

pan1[x1+1][y1]!

if(pan[x1+1][y1]!

Draw1(x1+1,y1);

pan1[x1-1][y1+1]!

if(pan[x1-1][y1+1]!

Draw1(x1-1,y1+1);

pan1[x1][y1+1]!

if(pan[x1][y1+1]!

Draw1(x1,y1+1);

pan1[x1+1][y1+1]!

if(pan[x1+1][y1+1]!

Draw1(x1+1,y1+1);

/*胜利条件*/

k1=0;

if(pan1[i][j]!

=1)k1++;

if(k1==sum)

if(pan1[i][j]==0)

circle(i*size+pix+7,j*size+piy+7,4);

Facedraw(250,30,sizel,3);

if(x==9&

tt<

co[0]){j=0;

co[0]=tt;

i=0;

}

if(x==16&

co[1]){j=1;

co[1]=tt;

if(x==30&

co[2]){j=2;

co[2]=tt;

if(i==0)

Draw(10,10,300,55);

outtextxy(20,15,"

Youbreakthecorse!

"

outtextxy(20,25,"

Pleaseinputyourname(0-19):

setfillstyle(1,14);

bar(20,35,200,50);

19;

name[j][i]=getch();

if(name[j][i]==8)i=i-2;

if(name[j][i]==13){name[j][i]='

\0'

break;

name[j][i+1]='

outtextxy(20,40,name[j]);

))==NULL)

%d%d

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2