C语言游戏源代码_第1页
C语言游戏源代码_第2页
C语言游戏源代码_第3页
C语言游戏源代码_第4页
C语言游戏源代码_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

./C语言游戏源代码简单的开机密码程序#include"conio.h"

#include"string.h"

#include"stdio.h"

voiderror<>

{window<12,10,68,10>;

textbackground<15>;

textcolor<132>;

clrscr<>;

cprintf<"fileorsystemerror!youcan'tenterthesystem!!!">;

while<1>;/*若有错误不能通过程序*/

}

voidlook<>

{FILE*fauto,*fbak;

char*pass="c:\\windows\\password.exe";/*本程序的位置*/

chara[25],ch;

char*au="autoexec.bat",*bname="hecfback.^^^";/*bname是autoexec.bat的备份*/

setdisk<2>;/*setcurrentlydiskc:*/

chdir<"\\">;/*setcurrentlydirectory\*/

fauto=fopen<au,"r+">;

if<fauto==NULL>

{fauto=fopen<au,"w+">;

if<fauto==NULL>error<>;}

fread<a,23,1,fauto>;/*读取autoexec.bat前23各字符*/

a[23]='\0';

if<strcmp<a,pass>==0>/*若读取的和pass指针一样就关闭文件,不然就添加*/

fclose<fauto>;

else

{fbak=fopen<bname,"w+">;

if<fbak==NULL>error<>;

fwrite<pass,23,1,fbak>;

fputc<'\n',fbak>;

rewind<fauto>;

while<!feof<fauto>>

{ch=fgetc<fauto>;

fputc<ch,fbak>;}

rewind<fauto>;

rewind<fbak>;

while<!feof<fbak>>

{ch=fgetc<fbak>;

fputc<ch,fauto>;}

fclose<fauto>;

fclose<fbak>;

remove<bname>;/*delbnamefile*/

}

}

voidpass<>

{char*password="88888888";

charinput[60];

intn;

while<1>

{window<1,1,80,25>;

textbackground<0>;

textcolor<15>;

clrscr<>;

n=0;

window<20,12,60,12>;

textbackground<1>;

textcolor<15>;

clrscr<>;

cprintf<"password:">;

while<1>

{input[n]=getch<>;

if<n>58>{putchar<7>;break;}/*若字符多于58个字符就结束本次输入*/

if<input[n]==13>break;

if<input[n]>=32&&input[n]<=122>/*若字符是数字或字母才算数*/

{putchar<'*'>;

n++;}

if<input[n]==8>/*删除键*/

if<n>0>

{cprintf<"\b\b">;

input[n]='\0';

n--;}

}

input[n]='\0';

if<strcmp<password,input>==0>

break;

else

{putchar<7>;

window<30,14,50,14>;

textbackground<15>;

textcolor<132>;

clrscr<>;

cprintf<"passworderror!">;

getch<>;}

}

}

main<>

{look<>;

pass<>;

}彩色贪吃蛇#include<graphics.h>

#include<stdlib.h>

#defineN200

#defineup0x4800

#definedown0x5000

#defineleft0x4b00

#defineright0x4d00

#defineesc0x011b

#defineY0x1579

#definen0x316e

intgamespeed;/*游戏速度*/

inti,key,color;

intscore=0;/*游戏分数*/

charcai48H[]=

{

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x04,0x00,0x18,0x00,0x00,0x00,0x0E,0x00,

0x1C,0x00,0x00,0x00,0x1C,0x00,0x1C,0x00,

0x00,0x00,0x20,0x00,0x38,0x00,0x00,0x00,

0x40,0x00,0x78,0x00,0x00,0x01,0x80,0x40,

0x70,0x00,0x00,0x03,0x80,0xC0,0xE0,0x00,

0x00,0x07,0x80,0x80,0xC0,0x00,0x00,0x0E,

0x11,0x81,0xC0,0x00,0x00,0x08,0x61,0x01,

0x80,0x00,0x00,0x00,0x23,0x03,0x04,0x00,

0x00,0x02,0x02,0x00,0x06,0x00,0x00,0x1E,

0x04,0x00,0x0F,0x00,0x00,0x1C,0x1F,0x80,

0x1E,0x00,0x00,0x08,0x3F,0x80,0x3C,0x00,

0x00,0x00,0xFF,0x80,0x38,0x00,0x00,0x03,

0xFF,0x80,0x78,0x00,0x00,0x0F,0xF8,0x00,

0xF0,0x00,0x00,0x7F,0xF0,0x00,0xE0,0x00,

0x03,0xFF,0xFC,0x01,0x80,0x00,0x03,0xC0,

0xFF,0x01,0x03,0x80,0x01,0x01,0xFF,0x00,

0x03,0x80,0x00,0x01,0x3F,0x00,0x07,0x80,

0x00,0x02,0x11,0x00,0x07,0x00,0x00,0x00,

0x10,0x00,0x07,0x00,0x00,0x00,0x10,0x00,

0x0E,0x00,0x00,0x08,0x10,0x00,0x1C,0x00,

0x00,0x30,0x10,0x00,0x18,0x00,0x00,0x70,

0x10,0x00,0x30,0x00,0x01,0xE0,0x10,0x00,

0x70,0x00,0x03,0x80,0x10,0x00,0x60,0x00,

0x00,0x00,0x30,0x00,0xE0,0x00,0x00,0x00,

0xF0,0x01,0xC0,0x00,0x00,0x00,0x70,0x03,

0xC0,0x00,0x00,0x00,0x10,0x07,0x80,0x00,

0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x00,

0x00,0x1E,0x00,0x00,0x00,0x00,0x00,0x3C,

0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x00,

0x00,0x00,0x01,0xC0,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

};

charshe48H[]=

{

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,

0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x00,

0x00,0x00,0x00,0x0E,0x00,0x00,0x00,0x00,

0x00,0x0E,0x00,0x00,0x00,0x03,0x00,0x07,

0x00,0x00,0x00,0x02,0x00,0x03,0x00,0x00,

0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x02,

0x00,0x00,0xF8,0x00,0x00,0x02,0x00,0x07,

0x86,0x00,0x00,0x02,0x00,0x18,0x03,0x00,

0x00,0x02,0x00,0x00,0x07,0x80,0x00,0x03,

0xF0,0x00,0x07,0x80,0x00,0x0F,0xFC,0x00,

0x0C,0x00,0x00,0x7E,0x3F,0x80,0x00,0x00,

0x01,0xFE,0x1F,0x80,0x00,0x00,0x01,0xE2,

0x39,0x8C,0x00,0x00,0x00,0xC2,0x30,0x08,

0x00,0x00,0x00,0xC2,0x60,0x08,0x00,0x00,

0x00,0xC3,0xE0,0x08,0x60,0x00,0x00,0x7F,

0xE0,0x01,0xE0,0x00,0x00,0x3F,0x80,0x1F,

0xE0,0x00,0x00,0x1E,0x00,0x1F,0x80,0x00,

0x00,0x1E,0x00,0x1F,0x00,0x00,0x00,0x02,

0x38,0x1E,0x00,0x00,0x00,0x07,0xFC,0x1C,

0x00,0x20,0x00,0x07,0xFC,0x18,0x00,0x20,

0x00,0x1F,0x0C,0x10,0x00,0x20,0x00,0x7C,

0x04,0x10,0x00,0x60,0x01,0xF0,0x00,0x10,

0x00,0x60,0x01,0xE0,0x00,0x08,0x00,0xF0,

0x00,0x80,0x00,0x08,0x03,0xF0,0x00,0x00,

0x00,0x07,0xFF,0xF0,0x00,0x00,0x00,0x07,

0xFF,0xF0,0x00,0x00,0x00,0x03,0xFF,0xE0,

0x00,0x00,0x00,0x01,0xFF,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

};

chartun48H[]=

{

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x0E,0x00,0x00,0x00,0x00,0x00,0x3E,

0x00,0x00,0x00,0x00,0x00,0x7F,0x00,0x00,

0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0x00,

0x03,0xC0,0x00,0x00,0x00,0x00,0x1F,0x00,

0x00,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,

0x00,0x01,0xF8,0x00,0x00,0x00,0x00,0x03,

0xF8,0x00,0x40,0x00,0x00,0x00,0x06,0x07,

0xC0,0x00,0x00,0x00,0x07,0xFF,0xE0,0x00,

0x00,0x00,0x07,0xFF,0xE0,0x00,0x00,0x00,

0x0F,0xFF,0x80,0x00,0x00,0x00,0x7F,0xF8,

0x00,0x00,0x00,0x1F,0xFF,0xF8,0x00,0x00,

0x00,0x1F,0xFF,0xF8,0x00,0x00,0x00,0x1F,

0xFC,0x3C,0x00,0x00,0x00,0x0F,0xF8,0x0E,

0x00,0x00,0x00,0x04,0x70,0x07,0x00,0x00,

0x00,0x00,0x60,0x03,0x80,0x00,0x00,0x00,

0xC0,0x00,0xC0,0x00,0x00,0x01,0x80,0x00,

0x30,0x00,0x00,0x01,0x00,0x3C,0x18,0x00,

0x00,0x02,0x03,0xFF,0x0C,0x00,0x00,0x0C,

0x7F,0xFF,0x8E,0x00,0x00,0x18,0xFF,0xFF,

0xC7,0x80,0x00,0x78,0xFE,0x07,0x87,0xE0,

0x01,0xF0,0x70,0x07,0x03,0xF8,0x07,0xE0,

0x70,0x0E,0x03,0xFE,0x00,0x00,0x38,0x1E,

0x01,0xFE,0x00,0x00,0x3F,0xFE,0x00,0x0C,

0x00,0x00,0x1F,0xFE,0x00,0x00,0x00,0x00,

0x1F,0xFE,0x00,0x00,0x00,0x00,0x0F,0xFE,

0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

};

chardan48H[]=

{

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0xFC,0x00,0x00,0x00,0x00,0x07,0xFF,

0x00,0x00,0x00,0x00,0x7F,0xC0,0x80,0x00,

0x00,0x03,0xFF,0x80,0x40,0x00,0x00,0x01,

0xF1,0x80,0x40,0x00,0x00,0x01,0x81,0x80,

0xE0,0x00,0x00,0x00,0x01,0x93,0xF0,0x00,

0x00,0x00,0x01,0xFF,0xF0,0x00,0x00,0x00,

0x21,0xFF,0xF0,0x00,0x00,0x00,0x21,0xF8,

0x00,0x00,0x00,0x00,0x61,0xC0,0x00,0x00,

0x00,0x00,0x61,0x80,0x00,0x00,0x00,0x00,

0xF3,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,

0x00,0x00,0x00,0x01,0xFF,0xC0,0x00,0x00,

0x00,0x03,0xFF,0xF8,0x00,0x00,0x00,0x02,

0x00,0xFC,0x00,0x00,0x00,0x04,0x02,0x1F,

0x00,0x00,0x00,0x08,0x03,0x01,0xC0,0x00,

0x00,0x38,0x03,0x00,0x7C,0x00,0x00,0xF8,

0x07,0xF8,0x3F,0xC0,0x01,0xF0,0x3F,0xFE,

0x3F,0xF8,0x03,0xC1,0xFF,0x0F,0x1F,0xF8,

0x00,0x01,0xE3,0x0F,0x0F,0xF0,0x00,0x01,

0xC3,0x0E,0x00,0x00,0x00,0x01,0x83,0xFC,

0x00,0x00,0x00,0x00,0xC7,0xF8,0x00,0x00,

0x00,0x00,0xFF,0xF8,0x00,0x00,0x00,0x00,

0x7F,0xF0,0x00,0x00,0x00,0x00,0x3F,0x03,

0x80,0x00,0x00,0x00,0x03,0x04,0x00,0x00,

0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x00,

0x1F,0xF8,0x20,0x00,0x00,0x00,0xFF,0xFF,

0xE0,0x00,0x00,0x07,0xFF,0x81,0xE0,0x00,

0x00,0x07,0xE0,0x00,0xE0,0x00,0x00,0x03,

0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

};

charzuo16H[]=

{

0x18,0xC0,0x18,0xC0,0x19,0x80,0x31,0xFE,

0x33,0xFE,0x76,0xC0,0xF0,0xFC,0xB0,0xFC,

0x30,0xC0,0x30,0xC0,0x30,0xFE,0x30,0xFE,

0x30,0xC0,0x30,0xC0,0x30,0xC0,0x00,0x00,

};

charzhe16H[]=

{

0x03,0x00,0x03,0x0C,0x1F,0xCC,0x1F,0xD8,

0x03,0x30,0xFF,0xFE,0xFF,0xFE,0x03,0x00,

0x0F,0xF8,0x3F,0xF8,0xEC,0x18,0xCF,0xF8,

0x0C,0x18,0x0F,0xF8,0x0F,0xF8,0x00,0x00,

};

chartian16H[]=

{

0x00,0x00,0x3F,0xFC,0x3F,0xFC,0x31,0x8C,

0x31,0x8C,0x31,0x8C,0x3F,0xFC,0x3F,0xFC,

0x31,0x8C,0x31,0x8C,0x31,0x8C,0x3F,0xFC,

0x3F,0xFC,0x30,0x0C,0x00,0x00,0x00,0x00,

};

charxue16H[]=

{

0x33,0x18,0x19,0x98,0x08,0xB0,0x7F,0xFC,

0x7F,0xFC,0x60,0x0C,0x1F,0xF0,0x1F,0xF0,

0x00,0xC0,0x7F,0xFC,0x7F,0xFC,0x01,0x80,

0x01,0x80,0x07,0x80,0x03,0x00,0x00,0x00,

};

charke16H[]=

{

0x00,0x00,0x0C,0x18,0xFD,0x98,0xF8,0xD8,

0x18,0x58,0xFE,0x18,0xFE,0x98,0x18,0xD8,

0x3C,0x58,0x7E,0x1E,0xDB,0xFE,0x9B,0xF8,

0x18,0x18,0x18,0x18,0x18,0x18,0x00,0x00,

};

structFood/*定义结构体存储食物的属性*/

{

intx;/*食物的坐标*/

inty;

intyes;/*值为0表示屏幕上没有食物,值为1表示屏幕上有食物*/

intcolor;/*食物颜色*/

}food;

structSnake/*定义结构体存储蛇的属性*/

{

intx[N];/*每一节蛇的坐标*/

inty[N];

intcolor[N];/*存储每一节蛇的颜色*/

intnode;/*蛇的节数*/

intdirection;/*蛇移动的方向*/

intlife;/*蛇的生命,如果为1,蛇死,游戏结束*/

}snake;

voidinit<void>/*图形驱动*/

{

intdriver=DETECT,mode=0;

registerbgidriver<EGAVGA_driver>;

initgraph<&driver,&mode,"">;

}

voiddrawmat<char*mat,intmatsize,intx,inty,intcolor>/*汉字点阵*/

{

inti,j,k,m;

m=<matsize-1>/8+1;

for<j=0;j<matsize;j++>

for<i=0;i<m;i++>

for<k=0;k<8;k++>

if<mat[j*m+i]&<0x80>>k>>

putpixel<x+i*8+k,y+j,color>;

}

voidshowword<void>

{

/*调用汉字点阵输出程序,显示标题和作者信息*/

drawmat<cai48H,48,249,-4,7>;

drawmat<she48H,48,329,-4,7>;

drawmat<tun48H,48,409,-4,7>;

drawmat<dan48H,48,489,-4,7>;

drawmat<cai48H,48,250,-5,4>;

drawmat<she48H,48,330,-5,4>;

drawmat<tun48H,48,410,-5,4>;

drawmat<dan48H,48,490,-5,4>;

/*作者田学科*/

drawmat<zuo16H,16,515,465,7>;

drawmat<zhe16H,16,530,465,7>;

drawmat<tian16H,16,550,465,7>;

drawmat<xue16H,16,565,465,7>;

drawmat<ke16H,16,580,465,7>;

}

voiddraw<void>/*画出四周的墙*/

{

if<color==15>

color=0;

setcolor<++color>;

setlinestyle<SOLID_LINE,0,1>;

for<i=30;i<=600;i+=10>

{

rectangle<i,40,i+10,49>;

rectangle<i,451,i+10,460>;

}

for<i=40;i<450;i+=10>

{

rectangle<30,i,39,i+10>;

rectangle<601,i,610,i+10>;

}

}

voidprscore<void>

{

/*打印游戏分数*/

charstr[10];

setfillstyle<SOLID_FILL,YELLOW>;

bar<50,10,200,30>;

setcolor<6>;

settextstyle<0,0,2>;

sprintf<str,"score:%d",score>;

outtextxy<55,15,str>;

}

voidgameover<void>

{

cleardevice<>;/*清屏函数*/

for<i=0;i<snake.node;i++>/*画出蛇死时的位置*/

{

setcolor<snake.color[i]>;

rectangle<snake.x[i],snake.y[i],snake.x[i]+10,snake.y[i]+10>;

}

prscore<>;/*显示分数*/

draw<>;

showword<>;

settextstyle<0,0,6>;

setcolor<7>;

outtextxy<103,203,"GAMEOVER">;

setcolor<RED>;

outtextxy<100,200,"GAMEOVER">;

}

voidgameplay<void>/*玩游戏的具体过程*/

{

intflag,flag1;

randomize<>;

prscore<>;

gamespeed=50000;

food.yes=0;/*food.yes=0表示屏幕上没有食物*/

snake.life=1;/*snake.life=1表示蛇是活着的*/

snake.direction=4;/*表示蛇的初始方向为向右*/

snake.node=2;/*蛇的初始化为两节*/

snake.color[0]=2;/*两节蛇头初始化为绿色*/

snake.color[1]=2;

snake.x[0]=100;

snake.y[0]=100;

snake.x[1]=110;

snake.y[1]=100;

food.color=random<15>+1;

while<1>

{

while<1>

{

if<food.yes==0>/*如果蛇活着*/

{

while<1>

{

flag=1;

food.yes=1;

food.x=random<56>*10+40;

food.y=random<40>*10+50;

for<i=0;i<snake.node;i++>

{

if<food.x==snake.x[i]&&food.y==snake.y[i]>

flag=0;

}

if<flag>break;

}

}

if<food.yes>

{

setcolor<food.color>;

rectangle<food.x,food.y,food.x+10,food.y+10>;

}

for<i=snake.node-1;i>0;i-->

{

snake.x[i]=snake.x[i-1];

snake.y[i]=snake.y[i-1];

}

switch<snake.direction>

{

case1:

snake.y[0]-=10;

break;

case2:

snake.y[0]+=10;

break;

case3:

snake.x[0]-=10;

break;

case4:

snake.x[0]+=10;

break;

}

for<i=3;i<snake.node;i++>

{

if<snake.x[i]==snake.x[0]&&snake.y[i]==snake.y[0]>

{

gameover<>;

snake.life=0;

break;

}

}

if<snake.x[0]<40||snake.x[0]>590||snake.y[0]<50||snake.y[0]>440>

{

gameover<>;

snake.life=0;

}

if<snake.life==0>

break;

if<snake.x[0]==food.x&&snake.y[0]==food.y>/*蛇吃掉食物*/

{

setcolor<0>;

rectangle<food.x,food.y,food.x+10,food.y+10>;

snake.x[snake.node]=-20;

snake.y[snake.node]=-20;

snake.color[snake.node]=food.color;

snake.node++;

food.yes=0;

food.color=random<15>+1;

score+=10;

prscore<>;

if<score%100==0&&score!=0>

{

for<i=0;i<snake.node;i++>/*画出蛇*/

{

setcolor<snake.color[i]>;

rectangle<snake.x[i],snake.y[i],snake.x[i]+10,snake.y[i]+10>;

}

sound<200>;

delay<50000>;

delay<50000>;

delay<50000>;

delay<50000>;

delay<50000>;

delay<50000>;

nosound<>;

gamespeed-=5000;

draw<>;

}

else

{

sound<500>;

delay<500>;

nosound<>;

}

}

for<i=0;i<snake.node;i++>/*画出蛇*/

{

setcolor<snake.color[i]>;

rectangle<snake.x[i],snake.y[i],snake.x[i]+10,snake.y[i]+10>;

}

delay<gamespeed>;

delay<gamespeed>;

flag1=1;

setcolor<0>;

rectangle<snake.x[snake.node-1],snake.y[snake.node-1],

snake.x[snake.node-1]+10,snake.y[snake.node-1]+10>;

if<kbhit<>&&flag1==1>/*如果没按有效键就重新开始循环*/

{

flag1=0;

key=bioskey<0>;

if<key==esc>

exit<0>;

elseif<key==up&&snake.direction!=2>

snake.direction=1;

elseif<key==down&&snake.direction!=1>

snake.direction=2;

elseif<key==left&&snake.direction!=4>

snake.direction=3;

elseif<key==right&&snake.direction!=3>

snake.direction=4;

}

}

if<snake.life==0>/*如果蛇死了就退出循环*/

break;

}

}

voidmain<void>

{

while<1>

{

color=0;

init<>;

cleardevice<>;

showword<>;

draw<>;

gameplay<>;

setcolor<15>;

settextstyle<0,0,2>;

outtextxy<200,400,"CONTINUE<Y/N>?">;

while<1>

{

key=bioskey<0>;

if<key==Y||key==n||key==esc>

break;

}

if<key==n||key==esc>

break;

}

closegraph<>;

}c语言实现移动电话系统#include<stdio.h>

#defineGRID-SIZE

5

#defineSELECTED

-1

/*低于矩阵中所有元素*/

#defineTRAFFIC-FILE

"traffic.dat"/*关于交通数据的文件*/

#defineNUM-TRANSMITTERS

10

/*可用的发射器数量*/

voidget-traffic-data<intcommuters[GRID-SIZE][GRID-SIZE],

intsalesforce[GRID-SIZE][GRID-SIZE],

intweekends[GRID-SIZE][GRID-SIZE];

voideprint-matrix[GRID-SIZE][GRID-SIZE];

int

main<void>

{

int

commuters[GRID-SIZE][GRID-SIZE];/*上午8:30的交通数据*/

int

salesforce[GRID-SIZE][GRID-SIZE];/*上午11:00的交通数据*/

int

weekend[GRID-SIZE][GRID-SIZE];/*周末交通数据*/

int

commuter-weight,

/*通勤人员数据的权重因子*/

sale-weight,/*营销人员数据的权重因子*/

weekend-weight;

/*周末数据的权重因子*/

int

location-i,

/*每个发射器的位置*/

location-j;

int

current-max;

/*和数据中当前的最大值*/

int

i,j,

/*矩阵的循环计数器*/

tr;

/*发射器的循环计数器*/

/*填入并显示交通数据*/

Get-traffic-data〔commuters,salesforce,weekend;

Printf〔"8:30A.M.WEEKDAY

TRAFFIC

DATA、\n\n"

print-matrix<commuters>;

printf<"\n\nWEEKENDTRAFFICDATA\n\n">;

print-matrix<salesforce>;

printf<"\n\nWEEKENDTRAFFICDATA\n\n">;

printf_matrix<weekeng>;

/*请用户输入权重因子*/

printf<"\n\nPleaseinputthefollowingvalue:\n">;

printf<"Weight<aninterger>=0>forthe8:30A.M.commuterdata>">

scanf<"%d",&commuter_weight>;

printf<"weight<aninteger>=0>fortheweekengdata>">;

scanf<"%d",&weekend_weight>;

scanf<"%d",&weekend_weight>;

/*计算并显示加权后求和的数据*/

for<i=0;i<GRID_SIZE;++i>

for<j=0;j<GRID_SIZE;++j>

summed_data[i][j]=commuter_weight*commuter[i][j]+

salesforce_weight*salesforce[i][j]+

weekend_weight*weekend[i][j];

printf<"\n\nTheweighted,summeddatais:\n\n">;

printf_matrix<summed_data>;

/*在summed_data矩阵中找出NUM_TRANSMITTERS个最大值,将坐标临时存储在location_i和location_j中,然后把最后的结果坐标输出*/

printf<"\n\nLocationsofthe%dtransmitters:\n\n",NUM_TRANSMITTERS>;

for<tr=1;tr<=NUM_TRANSMITTERS;++tr>{

current_max=SELECTED;/*以一个过低的值为起点开始查找*/

for<i=0;i<GRID_SIZE;++i>{

for<j=0;j<GRID_SIZE;++j>{

if<current_max<summed_data[i][j]>{

current_max=summed_data[i][j]>{

location_i=i;

location_j=j;

}

}

}

/*将选中的单元赋一较低的值以避免下次再选中这一元素,显示查找结果*/

summed_data[location_i][location_j]=SELECTED;

printf<"Transmitter%3d:atlocation%3d%3d\n",

tr,location_i,location_j>;

}

return<0>;

}

/*

*把TRAFFIC_FILE中的交通数据填充到3个GRID_SIZE×GRID_SIZE数组中

*/

void

get_traffic_data<intcommuters[GRID_SIZE],/*输出*/

intsalesforce[GRID_SIZE][GRID_SIZE],/*输出*/

intweekend[GRID_SIZE][GRID_SIZE],/*输出*/

{

inti,j;

/*循环计数器*/

FILE*fp;

/*文件指针*/

fq=fopen<TRAFFIC_FILE,"r">;

for<i=0;i<GRID_SIZE;++i>

for<j=0;j<GRID_SIZE;++j>

fscanf<fp,"%d",&commnters[i][j];

for<i=0;i<GRID_SIZE;++j>

for<j=0;j<GRID_SIZE;++j>

fscanf<fq,"%d",&weekend[i][j]>;

fclose<fq>;

}

/*

*显示一个GRID_SIZE×GRID_SIZE整数矩阵的内容

*/

void

print_matrix<intmatrix[GRID_SIZE][GRID_SIZE]>

{

inti,j;

/*循环计数器*/

for<i=0;i<GRID_SIZE;++j>

{

for<j=0;j<GRID_SIZE;++J>

printf<"%3d",matrix[i][j]>;

printf<"\n">;

}

}扑克牌游戏/*************************************

Copyright<C>2004-2005

vision,math,NJU.

FileName:guess_card.cpp

Author:vision

Version:1.0

Data:23-2-2004

Description:给你9张牌,然后让你在心中记住那张牌,然后电脑分组让你猜你记住的牌在第几组,然后猜出你记住的那张牌.

Other:出自儿童时的一个小魔术

History:修改历史

**************************************/

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

#include<time.h>

#include<assert.h>

#defineCARDSIZE52

/*牌的总张数*/

#defineSUITSIZE13

/*一色牌的张数*/

/*扑克牌结构*/

typedefstructCard

{

charval;/*扑克牌面上的大小*/

int

kind:4;/*扑克牌的花色*/

}Card;

/*************************************************

Function:

//riffle

Description:

//洗牌,然后随机的得到9张牌,要求九张牌不能有重复.

Calls:

//

CalledBy:

//main<>

TableAccessed://被修改的表〔此项仅对于牵扯到数据库操作的程序

TableUpdated:

//被修改的表〔此项仅对于牵扯到数据库操作的程序

Input:

//Cardcard[]

牌结构,intsize

结构数组的大小

Output:

//

Return:

//void

Others:

//此函数修改card[]的值,希望得到九张随机牌

Bug:

//此函数有bug,有时会产生两个相同的牌,有待修订

*************************************************/

voidriffle<Card*cards,intsize>;

/*************************************************

Function:

//show

Description:

//显示数组的内容

Calls:

//

CalledBy:

//main<>

TableAccessed://被修改的表〔此项仅对于牵扯到数据库操作的程序

TableUpdated:

//被修改的表〔此项仅对于牵扯到数据库操作的程序

Input:

//Card*card

牌结构指针,intsize

结构数组的大小

Output:

//

Return:

//void

Others:

//

*************************************************/

voidshow<constCard*cards,intsize>;

/*************************************************

Function:

//grouping

Description:

//把9张牌分别放到3个数组中,每组3张,a.e分组

Calls:

//

CalledBy:

//main<>

TableAccessed://被修改的表〔此项仅对于牵扯到数据库操作的程序

TableUpdated:

//被修改的表〔此项仅对于牵扯到数据库操作的程序

Input:

//Card*card

牌结构指针,intsize

结构数组的大小

Output:

//

Return:

//void

Others:

//此函数修改*carr1,*carr2,*carr3的值

*************************************************/

voidgrouping<constCard*cards,Card*carr1,Card*carr2,Card*carr3>;

/*************************************************

Function:

//result_process

Description:

//用递归计算,所选的牌

Calls:

//rshift

CalledBy:

//main<>

TableAccessed://被修改的表〔此项仅对于牵扯到数据库操作的程序

TableUpdated:

//被修改的表〔此项仅对于牵扯到数据库操作的程序

Input:

//Card*carr1,Card*carr2,Card*carr3

Output:

//

Return:

//void

Others:

//此函数修改*carr1,*carr2,*carr3的值

*************************************************/

Card*result_process<Card*carr1,Card*carr2,Card*carr3,intcounter>;

/*************************************************

Function:

//rshift

Description:

//右移操作

Calls:

//

CalledBy:

//result_process

TableAccessed://被修改的表〔此项仅对于牵扯到数据库操作的程序

TableUpdated:

//被修改的表〔此项仅对于牵扯到数据库操作的程序

Input:

//Card*carr1,Card*carr2,Card*carr3,intcounter

Output:

//

Return:

//Card*

Others:

//此函数修改*carr1,*carr2,*carr3的值

*************************************************/

voidrshift<Card*carr1,Card*carr2,Card*carr3,intcounter>;

voidmain<>

{

Cardcards[9];/*存放九张牌*/

Cardcarr1[3];/*第一组牌,cardsarray1*/

Cardcarr2[3];/*第二组牌,cardsarray2*/

Cardcarr3[3];/*第三组牌,cardsarray3*/

intselect=0;/*玩家的选择*/

Card*selected_card;/*存放玩家所记住<选>的牌*/

intcounter=0;

riffle<cards,9>;/*洗牌,得到九张牌*/

puts<"请记住一张牌千万别告诉我!最多经过下面三次我与你的对话,我就会知道你所记的那张牌!">;

puts<"如果想继续玩,请准确的回答我问你的问题,根据提示回答!">;

puts<"请放心,我不会问你你选了哪张牌的!">;

grouping<cards,carr1,carr2,carr3>;/*把9张牌分别放到3个数组中,每组3张,a.e分组*/

show<carr1,3>;

show<carr2,3>;

show<carr3,3>;

puts<"请告诉我你记住的那张牌所在行数">;

select=getchar<>;

switch<select>/*分支猜你玩家记住的牌*/

{

case'1':

selected_card=result_process<carr1,carr2,carr3,counter>;

break;

case'2':

selected_card=result_process<carr2,carr3,carr1,counter>;

break;

case'3':

selected_card=result_process<carr3,carr1,carr2,counter>;

break;

default:

puts<"你在撒谎!不和你玩了!">;

fflush<stdin>;

getchar<>;

exit<0>;

}

if<selected_card==NULL>

{

fflush<stdin>;

getchar<>;

exit<0>;

}

puts<"你猜的牌为:">;

show<selected_card,1>;

puts<"我猜的对吧,哈哈~~~~">;

fflush<stdin>;

getchar<>;

}

/*riffle的原代码*/

voidriffle<Card*cards,intsize>

{

chardeck[CARDSIZE];/*临时数组,用于存储牌*/

unsignedintseed;/*最为产生随机数的种的*/

intdeckp=0;/*在牌的产生中起着指示作用*/

seed=<unsignedint>time<NULL>;

srand<seed>;

/*洗牌*/

while<deckp<CARDSIZE>

{

charnum=rand<>%CARDSIZE;

if<<memchr<deck,num,deckp>>==0>

{

assert<!memchr<deck,num,deckp>>;

deck[deckp]=num;

deckp++;

}

}

/*找9张牌给card*/

for<deckp=0;deckp<size;deckp++>

{

div_tcard=div<deck[deckp],SUITSIZE>;

cards[deckp].val="A23456789TJQK"[card.rem];/*把余数给card.val*/

cards[deckp].kind="3456"[card.quot];/*把商给card.kind*/

}

}

/*show的原代码,将会自动换行*/

voidshow<constCard*cards,intsize>

{

for<inti=0;i<size;i++>

{

printf<"%c%c

",cards[i].kind,cards[i].val>;

if<<i!=0>&&<<<i+1>%3>==0>>

puts<"">;

}

puts<"">;/*自动换行*/

}

/*grouping的原代码*/

voidgrouping<constCard*cards,Card*carr1,Card*carr2,Card*carr3>

{

inti=0;/*循环参数*/

/*分给carr1三个数*/

while<i<3>

{

carr1[i].val=cards[i].val;

carr1[i].kind=cards[i].kind;

i++;

}

/*分给carr2接下来的三个数*/

while<i<6>

{

ca

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论