经典c语言程序小游戏

c语言程序–黑白棋

你想做什么?

人人对战的代码我有,但是人机对战的AI写不好

是个国际难题

//=====othello=====

#includeiostream

#includecstdio

using namespace std;

int board[8][8],saveboard[60][8][8];

int cx,cy,col,pass,empty,black,white;

void init(){ //initialization

memset(board,-1,sizeof(board));

board[3][3]=0;

board[3][4]=1;

board[4][4]=0;

board[4][3]=1;

col=0;

pass=0;

empty=60;

black=2;

white=2;

}

int input(){

char s[1000]=””;

scanf(“%s”,s);

if(s[0]=’a’ s[0]=’h’)

cy=s[0]-‘a’;

else if(s[0]=’A’ s[0]=’H’)

cy=s[0]-‘A’;

else return 0;

if(s[1]=’1′ s[1]=’8′){

cx=s[1]-‘1’;

return 1;

}

return 0;

}

int judge(int x,int y){

int i,j,temp;

temp=(col+1)%2;

//left up

if(board[x-1][y-1]==temp){

for(i=x-1,j=y-1; i=0 j=0; i–,j–){

if(board[i][j]0) break;

if(col==board[i][j]) return 1;

}

}

//up

if(board[x-1][y]==temp){

for(i=x-1; i=0; i–){

if(board[i][y]0) break;

if(col==board[i][y]) return 1;

}

}

//right up

if(board[x-1][y+1]==temp){

for(i=x-1,j=y+1; i=0 j8; i–,j++){

if(board[i][j]0) break;

if(col==board[i][j]) return 1;

}

}

//right

if(board[x][y+1]==temp){

for(j=y+1; j8; j++){

if(board[x][j]0) break;

if(col==board[x][j]) return 1;

}

}

//right down

if(board[x+1][y+1]==temp){

for(i=x+1,j=y+1; i8 j8; i++,j++){

if(board[i][j]0) break;

if(col==board[i][j]) return 1;

}

}

//down

if(board[x+1][y]==temp){

for(i=x+1; i8; i++){

if(board[i][y]0) break;

if(col==board[i][y]) return 1;

}

}

//left down

if(board[x+1][y-1]==temp){

for(i=x+1,j=y-1; i8 j=0; i++,j–){

if(board[i][j]0) break;

if(col==board[i][j]) return 1;

}

}

//left

if(board[x][y-1]==temp){

for(j=y-1; j=0; j–){

if(board[x][j]0) break;

if(col==board[x][j]) return 1;

}

}

return 0;

}

void move(int x,int y){

int i,j,temp,count;

temp=(col+1)%2;

count=0;

//left up

if(board[x-1][y-1]==temp){

for(i=x-1,j=y-1; i=0 j=0; i–,j–){

if(board[i][j]0) break;

if(col==board[i][j]){

while(i!=x){

board[++i][++j]=col;

count++;

}

count–;

break;

}

}

}

//up

if(board[x-1][y]==temp){

for(i=x-1; i=0; i–){

if(board[i][y]0) break;

if(col==board[i][y]){

while(i!=x){

board[++i][y]=col;

count++;

}

count–;

break;

}

}

}

//right up

if(board[x-1][y+1]==temp){

for(i=x-1,j=y+1; i=0 j8; i–,j++){

if(board[i][j]0) break;

if(col==board[i][j]){

while(i!=x){

board[++i][–j]=col;

count++;

}

count–;

break;

}

}

}

//right

if(board[x][y+1]==temp){

for(j=y+1; j8; j++){

if(board[x][j]0) break;

if(col==board[x][j]){

while(j!=y){

board[x][–j]=col;

count++;

}

count–;

break;

}

}

}

//right down

if(board[x+1][y+1]==temp){

for(i=x+1,j=y+1; i8 j8; i++,j++){

if(board[i][j]0) break;

if(col==board[i][j]){

while(i!=x){

board[–i][–j]=col;

count++;

}

count–;

break;

}

}

}

//down

if(board[x+1][y]==temp){

for(i=x+1; i8; i++){

if(board[i][y]0) break;

if(col==board[i][y]){

while(i!=x){

board[–i][y]=col;

count++;

}

count–;

break;

}

}

}

//left down

if(board[x+1][y-1]==temp){

for(i=x+1,j=y-1; i8 j=0; i++,j–){

if(board[i][j]0) break;

if(col==board[i][j]){

while(i!=x){

board[–i][++j]=col;

count++;

}

count–;

break;

}

}

}

//left

if(board[x][y-1]==temp){

for(j=y-1; j=0; j–){

if(board[x][j]0) break;

if(col==board[x][j]){

while(j!=y){

board[x][++j]=col;

count++;

}

count–;

break;

}

}

}

board[x][y]=col;

if(col){

black+=count;

white-=count;

black++;

}

else{

black-=count;

white+=count;

white++;

}

empty–;

}

void output(){

char c;

printf(” “);

for(int i=0; i8; i++){

c=’A’+i;

printf(“%2c”,c);

}

printf(“\n”);

for(int i=0; i8; i++){

printf(“%d”,i+1);

for(int j=0; j8; j++){

if(board[i][j]==-1)

c=’ ‘;

else if(board[i][j]==0)

c=’O’;

else

c=’X’;

printf(“%2c”,c);

}

printf(“\n”);

}

printf(“Black:%3d White:%3d\n”,black,white);

}

int passjudge(){

int f=0;

for(int i=0; i8; i++)

for(int j=0; j8; j++)

if(board[i][j]0)

f+=judge(i,j);

return f;

}

void startprint(){

printf(“1、New game\n2、setboard\n0、Exit\n”);

}

void pvp(){

while(empty pass2){

//black or white

col++;

col%=2;

output();

//input

if(!input()){

if(!passjudge()){

printf(“Pass!\n”);

pass++;

}

else {

col++;

printf(“No pass!\nPlease input right stone!\n”);

}

continue;

}

if(judge(cx,cy)){

move(cx,cy);

pass=0;

}

else{

col++;

printf(“Miss stone\n”);

}

}

output();

if(blackwhite)

printf(“Black Win!\n”);

else if(blackwhite)

printf(“White Win!\n”);

else

printf(“Draw Game!\n”);

startprint();

}

void setboard(){

char c;

for(int i=0; i8; i++)

for(int j=0; scanf(“%c”,c) c!=’\n’; j++){

if(j=8) continue;

if(c==’o’ c==’O’)

board[i][j]=0;

else if(c==’x’ c==’X’)

board[i][j]=1;

}

printf(“White start or Black start?\n(W/B)”);

scanf(“%c”,c);

if(c==’w’ || c==’W’)

col=1;

if(c==’b’ || c==’B’)

col=0;

}

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

int n;

startprint();

while(scanf(“%d”,n) n){

init();

if(n==1)

pvp();

if(n==2){

setboard();

pvp();

}

}

return 0;

}

经典c语言程序小游戏

用C语言编写的小游戏代码是什么?

/*也不知道你是什么级别的,我是一个新手,刚接触编程语言,以下是我自己变得一个小程序,在所有c语言的编译器(vc++6.0、turbo????)上都能运行,你还可以进一步改进。这是一个类似贪吃蛇的小游戏。祝你好运*/\x0d\x0a/*贪吃蛇*/\x0d\x0a#include\x0d\x0a#include\x0d\x0a#include\x0d\x0a#include\x0d\x0aint head=3 ,tail=0;\x0d\x0aint main()\x0d\x0a{\x0d\x0aint i,j,k=0;\x0d\x0aint zuobiao[2][80];\x0d\x0along start;\x0d\x0aint direction=77;\x0d\x0aint gamespeed;\x0d\x0aint timeover;\x0d\x0aint change(char qipan[20][80],int zuobiao[2][80],char direction);\x0d\x0azuobiao[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;\x0d\x0a/*处理棋盘*/\x0d\x0achar qipan[20][80];//定义棋盘\x0d\x0afor(i=0;i for(j=0;jqipan[i][j]=’ ‘;//初始化棋盘\x0d\x0afor(i=0;iqipan[0][i]=’_’;\x0d\x0afor(i=0;iqipan[i][0]=’|’;\x0d\x0afor(i=0;iqipan[i][79]=’|’;\x0d\x0afor(i=0;iqipan[19][i]=’_’;\x0d\x0aqipan[1][1]=qipan[1][2]=qipan[1][3]=’*’;//初始化蛇的位置\x0d\x0aqipan[1][4]=’#’;\x0d\x0aprintf(“This is a game of a SNAKE.\nGOOD LUCK TO YOU !\n”);\x0d\x0aprintf(“Input your game speed,please.(e.g.300)\n”);\x0d\x0ascanf(“%d”,gamespeed);\x0d\x0a\x0d\x0awhile(direction!=’q’)\x0d\x0a{\x0d\x0asystem(“cls”);\x0d\x0afor(i=0;ifor(j=0;jprintf(“%c”,qipan[i][j]);\x0d\x0atimeover=1;\x0d\x0astart=clock();\x0d\x0awhile(!kbhit()(timeover=clock()-startif(timeover)\x0d\x0a{\x0d\x0agetch();\x0d\x0adirection=getch();\x0d\x0a}\x0d\x0aelse\x0d\x0adirection=direction;\x0d\x0aif(!(direction==72||direction==80||direction==75||direction==77))\x0d\x0a{\x0d\x0areturn 0;\x0d\x0asystem(“cls”);\x0d\x0aprintf(“GAME OVER!\n”);\x0d\x0a}\x0d\x0aif(!change(qipan,zuobiao,direction))\x0d\x0a{\x0d\x0adirection=’q’;\x0d\x0asystem(“cls”);\x0d\x0aprintf(“GAME OVER!\n”);\x0d\x0a}\x0d\x0a}\x0d\x0areturn 0;\x0d\x0a}\x0d\x0aint change(char qipan[20][80],int zuobiao[2][80],char direction)\x0d\x0a{\x0d\x0aint x,y;\x0d\x0aif(direction==72)\x0d\x0ax=zuobiao[0][head]-1;y=zuobiao[1][head];\x0d\x0aif(direction==80)\x0d\x0ax=zuobiao[0][head]+1;y=zuobiao[1][head];\x0d\x0aif(direction==75)\x0d\x0ax=zuobiao[0][head];y=zuobiao[0][head]-1;\x0d\x0aif(direction==77)\x0d\x0ax=zuobiao[0][head];y=zuobiao[1][head]+1;\x0d\x0aif(x==0||x==18||y==78||y==0)\x0d\x0areturn 0;\x0d\x0aif(qipan[x][y]!=’ ‘)\x0d\x0areturn 0;\x0d\x0aqipan[zuobiao[0][tail]][zuobiao[1][tail]]=’ ‘;\x0d\x0atail=(tail+1)%80;\x0d\x0aqipan[zuobiao[0][head]][zuobiao[1][head]]=’*’;\x0d\x0ahead=(head+1)%80;\x0d\x0azuobiao[0][head]=x;\x0d\x0azuobiao[1][head]=y;\x0d\x0aqipan[zuobiao[0][head]][zuobiao[1][head]]=’#’;\x0d\x0areturn 1;\x0d\x0a}

求各种C语言编程小游戏,越多越好,多了会有加分

C语言数字记忆小游戏,望采纳

#includestdio.h

#includectype.h

#includestdlib.h

#includetime.h

#define TURE 1

#define FALSE 0

 

void main()

 

{

char another_name=’Y’;

char another_game=’Y’;

 

int correct=’TRUE’;

int counter=0;

int sequence_length=0;

int i=0;

long int seed=0;

int number=0;

long int now=0;

long time_taken=0;

int clock_per_sec;

 

printf(“\n———————————记忆小游戏——————————————–\n”);

printf(“请牢记屏幕上出现的没一个数字,并在规定时间内输入您记下的数字。\n”);

printf(“回车开始游戏。\n”);

 

scanf(“%c”,another_game);

 

do

{

correct=’TRUE’;

counter=0;

sequence_length=2;

time_taken=clock();

 

while(correct)

{

sequence_length+=(counter++%3==0);

seed=time(NULL);

now=clock();

srand((int)seed);

for(i=0;i=sequence_length;i++)

printf(“%d”,rand()%10);

for(;clock()-nowclock_per_sec;);

printf(“\r”);

for(i=0;i=sequence_length;i++)

printf(“”);

if(counter==1)

printf(“\n输入您记住的数字,以空格隔开。\n”);

else

printf(“\r”);

srand((int)seed);

for(i=0;i=sequence_length;i++)

{

scanf(“%d”,number);

if(number!=rand()%10)

{

correct=FALSE;

break;

 

}

 

}

printf(“%s\n”,correct?”正确!”:”错误!”);

 

}

time_taken=(clock()-time_taken)/clock_per_sec;

printf(“\n您的成绩是:%d”,–counter*100/time_taken);

fflush(stdin);

printf(“\n是否继续游戏?(Y/N)?\n”);

scanf(“%c”,another_game);

 

}

while(another_game==’y’||another_game==’Y’);

}

C语言可以写哪些小游戏?

C语言可以编手机游戏. 你叫他去死 不过我这有 贪吃蛇的代码,你倒可以看看 (用TC 编译一定过)

#include

#include

#include

#include

#include

#define Enter 7181

#define ESC 283

#define UP 18432

#define DOWN 20480

#define LEFT 19200

#define RIGHT 19712

#ifdef __cplusplus

#define __CPPARGS …

#else

#define __CPPARGS

#endif

void interrupt (*oldhandler)(__CPPARGS);

void interrupt newhandler(__CPPARGS);

void SetTimer(void interrupt (*IntProc)(__CPPARGS));

void KillTimer(void);

void Initgra(void);

void TheFirstBlock(void);

void DrawMap(void);

void Initsnake(void);

void Initfood(void);

void Snake_Headmv(void);

void Flag(int,int,int,int);

void GameOver(void);

void Snake_Bodymv(void);

void Snake_Bodyadd(void);

void PrntScore(void);

void Timer(void);

void Win(void);

void TheSecondBlock(void);

void Food(void);

void Dsnkorfd(int,int,int);

void Delay(int);

struct Snake

{int x;int y;int color;}Snk[12];

struct Food

{int x;int y;int color;}Fd;

int flag1=1,flag2=0,flag3=0,flag4=0,flag5=0,flag6=0,

checkx,checky,num,key=0,Times,Score,Hscore,Snkspeed,TimerCounter,TureorFalse;

char Sco[2],Time[6];

void main()

{ Initgra();

SetTimer(newhandler);

TheFirstBlock();

while(1)

{DrawMap();

Snake_Headmv();

GameOver();

Snake_Bodymv();

Snake_Bodyadd();

PrntScore();

Timer();

Win();

if(key==ESC)

break;

if(key==Enter)

{cleardevice();

TheFirstBlock();

}

TheSecondBlock();

Food();

Delay(Snkspeed);

}

closegraph();

KillTimer();

}

void interrupt newhandler(__CPPARGS)

{

TimerCounter++;

oldhandler();

}

void SetTimer(void interrupt (*IntProc)(__CPPARGS))

{

oldhandler=getvect(0x1c);

disable();

setvect(0x1c,IntProc);

enable();

}

void KillTimer()

{

disable();

setvect(0x1c,oldhandler);

enable();

}

void Initgra()

{int gd=DETECT,gm;

initgraph(gd,gm,”d:\\tc”);

}

void TheFirstBlock()

{setcolor(11);

settextstyle(0,0,4);

outtextxy(100,220,”The First Block”);

loop:key=bioskey(0);

if(key==Enter)

{cleardevice();

Initsnake();

Initfood();

Score=0;

Hscore=1;

Snkspeed=10;

num=2;

Times=0;

key=0;

TureorFalse=1;

TimerCounter=0;

Time[0]=’0′;Time[1]=’0′;Time[2]=’:’;Time[3]=’1′;Time[4]=’0′;Time[5]=’\0′;

}

else if(key==ESC) cleardevice();

else goto loop;

}

void DrawMap()

{line(10,10,470,10);

line(470,10,470,470);

line(470,470,10,470);

line(10,470,10,10);

line(480,20,620,20);

line(620,20,620,460);

line(620,460,480,460);

line(480,460,480,20);

}

void Initsnake()

{randomize();

num=2;

Snk[0].x=random(440);

Snk[0].x=Snk[0].x-Snk[0].x%20+50;

Snk[0].y=random(440);

Snk[0].y=Snk[0].y-Snk[0].y%20+50;

Snk[0].color=4;

Snk[1].x=Snk[0].x;

Snk[1].y=Snk[0].y+20;

Snk[1].color=4;

}

void Initfood()

{randomize();

Fd.x=random(440);

Fd.x=Fd.x-Fd.x%20+30;

Fd.y=random(440);

Fd.y=Fd.y-Fd.y%20+30;

Fd.color=random(14)+1;

}

void Snake_Headmv()

{if(bioskey(1))

{key=bioskey(0);

switch(key)

{case UP:Flag(1,0,0,0);break;

case DOWN:Flag(0,1,0,0);break;

case LEFT:Flag(0,0,1,0);break;

case RIGHT:Flag(0,0,0,1);break;

default:break;

}

}

if(flag1)

{checkx=Snk[0].x;

checky=Snk[0].y;

Dsnkorfd(Snk[0].x,Snk[0].y,0);

Snk[0].y-=20;

Dsnkorfd(Snk[0].x,Snk[0].y,Snk[0].color);

}

if(flag2)

{checkx=Snk[0].x;

checky=Snk[0].y;

Dsnkorfd(Snk[0].x,Snk[0].y,0);

Snk[0].y+=20;

Dsnkorfd(Snk[0].x,Snk[0].y,Snk[0].color);

}

if(flag3)

{checkx=Snk[0].x;

checky=Snk[0].y;

Dsnkorfd(Snk[0].x,Snk[0].y,0);

Snk[0].x-=20;

Dsnkorfd(Snk[0].x,Snk[0].y,Snk[0].color);

}

if(flag4)

{checkx=Snk[0].x;

checky=Snk[0].y;

Dsnkorfd(Snk[0].x,Snk[0].y,0);

Snk[0].x+=20;

Dsnkorfd(Snk[0].x,Snk[0].y,Snk[0].color);

}

}

void Flag(int a,int b,int c,int d)

{flag1=a;flag2=b;flag3=c;flag4=d;}

void GameOver()

{int i;

if(Snk[0].x460||Snk[0].y460)

{cleardevice();

setcolor(11);

settextstyle(0,0,4);

outtextxy(160,220,”Game Over”);

loop1:key=bioskey(0);

if(key==Enter)

{cleardevice();

TheFirstBlock();

}

else

if(key==ESC)

cleardevice();

else

goto loop1;

}

for(i=3;inum;i++)

{if(Snk[0].x==Snk[i].xSnk[0].y==Snk[i].y)

{cleardevice();

setcolor(11);

settextstyle(0,0,4);

outtextxy(160,220,”Game Over”);

loop2:key=bioskey(0);

if(key==Enter)

{cleardevice();

TheFirstBlock();

}

else

if(key==ESC)

cleardevice();

else goto loop2;

}

}

}

void Snake_Bodymv()

{int i,s,t;

for(i=1;inum;i++)

{Dsnkorfd(checkx,checky,Snk[i].color);

Dsnkorfd(Snk[i].x,Snk[i].y,0);

s=Snk[i].x;

t=Snk[i].y;

Snk[i].x=checkx;

Snk[i].y=checky;

checkx=s;

checky=t;

}

}

void Food()

{if(flag5)

{randomize();

Fd.x=random(440);

Fd.x=Fd.x-Fd.x%20+30;

Fd.y=random(440);

Fd.y=Fd.y-Fd.y%20+30;

Fd.color=random(14)+1;

flag5=0;

}

Dsnkorfd(Fd.x,Fd.y,Fd.color);

}

void Snake_Bodyadd()

{if(Snk[0].x==Fd.xSnk[0].y==Fd.y)

{if(Snk[num-1].xSnk[num-2].x)

{num++;

Snk[num-1].x=Snk[num-2].x+20;

Snk[num-1].y=Snk[num-2].y;

Snk[num-1].color=Fd.color;

}

else

if(Snk[num-1].xSnk[num-2].x)

{num++;

Snk[num-1].x=Snk[num-2].x-20;

Snk[num-1].y=Snk[num-2].y;

Snk[num-1].color=Fd.color;

}

else

if(Snk[num-1].ySnk[num-2].y)

{num++;

Snk[num-1].x=Snk[num-2].x;

Snk[num-1].y=Snk[num-2].y+20;

Snk[num-1].color=Fd.color;

}

else

if(Snk[num-1].ySnk[num-2].y)

{num++;

Snk[num-1].x=Snk[num-2].x;

Snk[num-1].y=Snk[num-2].y-20;

Snk[num-1].color=Fd.color;

}

flag5=1;

Score++;

}

}

void PrntScore()

{if(Hscore!=Score)

{setcolor(11);

settextstyle(0,0,3);

outtextxy(490,100,”SCORE”);

setcolor(2);

setfillstyle(1,0);

rectangle(520,140,580,180);

floodfill(530,145,2);

Sco[0]=(char)(Score+48);

Sco[1]=’\0′;

Hscore=Score;

setcolor(4);

settextstyle(0,0,3);

outtextxy(540,150,Sco);

}

}

void Timer()

{if(TimerCounter18)

{Time[4]=(char)(Time[4]-1);

if(Time[4]’0′)

{Time[4]=’9′;

Time[3]=(char)(Time[3]-1);

}

if(Time[3]’0′)

{Time[3]=’5′;

Time[1]=(char)(Time[1]-1);

}

if(TureorFalse)

{setcolor(11);

settextstyle(0,0,3);

outtextxy(490,240,”TIMER”);

setcolor(2);

setfillstyle(1,0);

rectangle(490,280,610,320);

floodfill(530,300,2);

setcolor(11);

settextstyle(0,0,3);

outtextxy(495,290,Time);

TureorFalse=0;

}

if(Time[1]==’0’Time[3]==’0’Time[4]==’0′)

{setcolor(11);

settextstyle(0,0,4);

outtextxy(160,220,”Game Over”);

loop:key=bioskey(0);

if(key==Enter)

{cleardevice();

TheFirstBlock();

}

else if(key==ESC) cleardevice();

else goto loop;

}

TimerCounter=0;

TureorFalse=1;

}

}

void Win()

{if(Score==3)

Times++;

if(Times==2)

{cleardevice();

setcolor(11);

settextstyle(0,0,4);

outtextxy(160,220,”You Win”);

loop:key=bioskey(0);

if(key==Enter)

{cleardevice();

TheFirstBlock();

key=0;

}

else if(key==ESC) cleardevice();

else goto loop;

}

}

void TheSecondBlock()

{if(Score==3)

{cleardevice();

setcolor(11);

settextstyle(0,0,4);

outtextxy(100,220,”The Second Block”);

loop:key=bioskey(0);

if(key==Enter)

{cleardevice();

Initsnake();

Initfood();

Score=0;

Hscore=1;

Snkspeed=8;

num=2;

key=0;

}

else if(key==ESC) cleardevice();

else goto loop;

}

}

void Dsnkorfd(int x,int y,int color)

{setcolor(color);

setfillstyle(1,color);

circle(x,y,10);

floodfill(x,y,color);

}

void Delay(int times)

{int i;

for(i=1;i=times;i++)

delay(15000);

}

用C语言编写小游戏

用c语言编写一个五子棋吧,不怎么难,给你程序,自己参考一下

/*3.3.4 源程序*/

#include “graphics.h” /*图形系统头文件*/

#define LEFT 0x4b00 /*光标左键值*/

#define RIGHT 0x4d00 /*光标右键值*/

#define DOWN 0x5000 /*光标下键值*/

#define UP 0x4800 /*光标上键值*/

#define ESC 0x011b /* ESC键值*/

#define ENTER 0x1c0d /* 回车键值*/

int a[8][8]={0},key,score1,score2;/*具体分数以及按键与存放棋子的变量*/

char playone[3],playtwo[3];/*两个人的得分转换成字符串输出*/

void playtoplay(void);/*人人对战函数*/

void DrawQp(void);/*画棋盘函数*/

void SetPlayColor(int x);/*设置棋子第一次的颜色*/

void MoveColor(int x,int y);/*恢复原来棋盘状态*/

int QpChange(int x,int y,int z);/*判断棋盘的变化*/

void DoScore(void);/*处理分数*/

void PrintScore(int n);/*输出成绩*/

void playWin(void);/*输出胜利者信息*/

/******主函数*********/

void main(void)

{

int gd=DETECT,gr;

initgraph(gd,gr,”c:\\tc”); /*初始化图形系统*/

DrawQp();/*画棋盘*/

playtoplay();/*人人对战*/

getch();

closegraph();/*关闭图形系统*/

}

void DrawQp()/*画棋盘*/

{

int i,j;

score1=score2=0;/*棋手一开始得分都为0*/

setbkcolor(BLUE);

for(i=100;i=420;i+=40)

{

line(100,i,420,i);/*画水平线*/

line(i,100,i,420); /*画垂直线*/

}

setcolor(0);/*取消圆周围的一圈东西*/

setfillstyle(SOLID_FILL,15);/*白色实体填充模式*/

fillellipse(500,200,15,15); /*在显示得分的位置画棋*/

setfillstyle(SOLID_FILL,8); /*黑色实体填充模式*/

fillellipse(500,300,15,15);

a[3][3]=a[4][4]=1;/*初始两个黑棋*/

a[3][4]=a[4][3]=2;/*初始两个白棋*/

setfillstyle(SOLID_FILL,WHITE);

fillellipse(120+3*40,120+3*40,15,15);

fillellipse(120+4*40,120+4*40,15,15);

setfillstyle(SOLID_FILL,8);

fillellipse(120+3*40,120+4*40,15,15);

fillellipse(120+4*40,120+3*40,15,15);

score1=score2=2; /*有棋后改变分数*/

DoScore();/*输出开始分数*/

}

void playtoplay()/*人人对战*/

{

int x,y,t=1,i,j,cc=0;

while(1)/*换棋手走棋*/

{

x=120,y=80;/*每次棋子一开始出来的坐标,x为行坐标,y为列坐标*/

while(1) /*具体一个棋手走棋的过程*/

{

PrintScore(1);/*输出棋手1的成绩*/

PrintScore(2);/*输出棋手2的成绩*/

SetPlayColor(t);/*t变量是用来判断棋手所执棋子的颜色*/

fillellipse(x,y,15,15);

key=bioskey(0);/*接收按键*/

if(key==ESC)/*跳出游戏*/

break;

else

if(key==ENTER)/*如果按键确定就可以跳出循环*/

{

if(y!=80a[(x-120)/40][(y-120)/40]!=1

a[(x-120)/40][(y-120)/40]!=2)/*如果落子位置没有棋子*/

{

if(t%2==1)/*如果是棋手1移动*/

a[(x-120)/40][(y-120)/40]=1;

else/*否则棋手2移动*/

a[(x-120)/40][(y-120)/40]=2;

if(!QpChange(x,y,t))/*落子后判断棋盘的变化*/

{

a[(x-120)/40][(y-120)/40]=0;/*恢复空格状态*/

cc++;/*开始统计尝试次数*/

if(cc=64-score1-score2) /*如果尝试超过空格数则停步*/

{

MoveColor(x,y);

fillellipse(x,y,15,15);

break;

}

else

continue;/*如果按键无效*/

}

DoScore();/*分数的改变*/

break;/*棋盘变化了,则轮对方走棋*/

}

else/*已经有棋子就继续按键*/

continue;

}

else /*四个方向按键的判断*/

if(key==LEFTx120)/*左方向键*/

{

MoveColor(x,y);

fillellipse(x,y,15,15);

SetPlayColor(t);

x-=40;

fillellipse(x,y,15,15);

}

else

if(key==RIGHTx400y80)/*右方向键*/

{

MoveColor(x,y);

fillellipse(x,y,15,15);

SetPlayColor(t);

x+=40;

fillellipse(x,y,15,15);

}

else

if(key==UPy120)/*上方向键*/

{

MoveColor(x,y);

fillellipse(x,y,15,15);

SetPlayColor(t);

y-=40;

fillellipse(x,y,15,15);

}

else

if(key==DOWNy400)/*下方向键*/

{

MoveColor(x,y);

fillellipse(x,y,15,15);

SetPlayColor(t);

y+=40;

fillellipse(x,y,15,15);

}

}

if(key==ESC)/*结束游戏*/

break;

if((score1+score2)==64||score1==0||score2==0)/*格子已经占满或一方棋子为0判断胜负*/

{

playWin();/*输出最后结果*/

break;

}

t=t%2+1; /*一方走后,改变棋子颜色即轮对方走*/

cc=0; /*计数值恢复为0*/

} /*endwhile*/

}

void SetPlayColor(int t)/*设置棋子颜色*/

{

if(t%2==1)

setfillstyle(SOLID_FILL,15);/*白色*/

else

setfillstyle(SOLID_FILL,8);/*灰色*/

}

void MoveColor(int x,int y)/*走了一步后恢复原来格子的状态*/

{

if(y100)/*如果是从起点出发就恢复蓝色*/

setfillstyle(SOLID_FILL,BLUE);

else/*其他情况如果是1就恢复白色棋子,2恢复黑色棋子,或恢复蓝色棋盘*/

switch(a[(x-120)/40][(y-120)/40])

{

case 1:

setfillstyle(SOLID_FILL,15);break; /*白色*/

case 2:

setfillstyle(SOLID_FILL,8);break; /*黑色*/

default:

setfillstyle(SOLID_FILL,BLUE); /*蓝色*/

}

}

int QpChange(int x,int y,int t)/*判断棋盘的变化*/

{

int i,j,k,kk,ii,jj,yes;

yes=0;

i=(x-120)/40; /*计算数组元素的行下标*/

j=(y-120)/40; /*计算数组元素的列下标*/

SetPlayColor(t);/*设置棋子变化的颜色*/

/*开始往8个方向判断变化*/

if(j6)/*往右边*/

{

for(k=j+1;k8;k++)

if(a[i][k]==a[i][j]||a[i][k]==0)/*遇到自己的棋子或空格结束*/

break;

if(a[i][k]!=0k8)

{

for(kk=j+1;kkkk8;kk++)/*判断右边*/

{

a[i][kk]=a[i][j]; /*改变棋子颜色*/

fillellipse(120+i*40,120+kk*40,15,15);

}

if(kk!=j+1) /*条件成立则有棋子改变过颜色*/

yes=1;

}

}

if(j1)/*判断左边*/

{

for(k=j-1;k=0;k–)

if(a[i][k]==a[i][j]||!a[i][k])

break;

if(a[i][k]!=0k=0)

{

for(kk=j-1;kkkk=0;kk–)

{

a[i][kk]=a[i][j];

fillellipse(120+i*40,120+kk*40,15,15);

}

if(kk!=j-1)

yes=1;

}

}

if(i6)/*判断下边*/

{

for(k=i+1;k8;k++)

if(a[k][j]==a[i][j]||!a[k][j])

break;

if(a[k][j]!=0k8)

{

for(kk=i+1;kkkk8;kk++)

{

a[kk][j]=a[i][j];

fillellipse(120+kk*40,120+j*40,15,15);

}

if(kk!=i+1)

yes=1;

}

}

if(i1)/*判断上边*/

{

for(k=i-1;k=0;k–)

if(a[k][j]==a[i][j]||!a[k][j])

break;

if(a[k][j]!=0k=0)

{

for(kk=i-1;kkkk=0;kk–)

{

a[kk][j]=a[i][j];

fillellipse(120+kk*40,120+j*40,15,15);

}

if(kk!=i-1)

yes=1;

}

}

if(i1j6)/*右上*/

{

for(k=i-1,kk=j+1;k=0kk8;k–,kk++)

if(a[k][kk]==a[i][j]||!a[k][kk])

break;

if(a[k][kk]k=0kk8)

{

for(ii=i-1,jj=j+1;iikk=0;ii–,jj++)

{

a[ii][jj]=a[i][j];

fillellipse(120+ii*40,120+jj*40,15,15);

}

if(ii!=i-1)

yes=1;

}

}

if(i6j1)/*左下*/

{

for(k=i+1,kk=j-1;k8kk=0;k++,kk–)

if(a[k][kk]==a[i][j]||!a[k][kk])

break;

if(a[k][kk]!=0k8kk=0)

{

for(ii=i+1,jj=j-1;iikk8;ii++,jj–)

{

a[ii][jj]=a[i][j];

fillellipse(120+ii*40,120+jj*40,15,15);

}

if(ii!=i+1)

yes=1;

}

}

if(i1j1)/*左上*/

{

for(k=i-1,kk=j-1;k=0kk=0;k–,kk–)

if(a[k][kk]==a[i][j]||!a[k][kk])

break;

if(a[k][kk]!=0k=0kk=0)

{

for(ii=i-1,jj=j-1;iikk=0;ii–,jj–)

{

a[ii][jj]=a[i][j];

fillellipse(120+ii*40,120+jj*40,15,15);

}

if(ii!=i-1)

yes=1;

}

}

if(i6j6)/* 右下*/

{

for(k=i+1,kk=j+1;kk8kk8;k++,kk++)

if(a[k][kk]==a[i][j]||!a[k][kk])

break;

if(a[k][kk]!=0kk8k8)

{

for(ii=i+1,jj=j+1;iikk8;ii++,jj++)

{

a[ii][jj]=a[i][j];

fillellipse(120+ii*40,120+jj*40,15,15);

}

if(ii!=i+1)

yes=1;

}

}

return yes;/*返回是否改变过棋子颜色的标记*/

}

void DoScore()/*处理分数*/

{

int i,j;

score1=score2=0;/*重新开始计分数*/

for(i=0;i8;i++)

for(j=0;j8;j++)

if(a[i][j]==1)/*分别统计两个人的分数*/

score1++;

else

if(a[i][j]==2)

score2++;

}

void PrintScore(int playnum)/*输出成绩*/

{

if(playnum==1)/*清除以前的成绩*/

{

setfillstyle(SOLID_FILL,BLUE);

bar(550,100,640,400);

}

setcolor(RED);

settextstyle(0,0,4);/*设置文本输出样式*/

if(playnum==1)/*判断输出哪个棋手的分,在不同的位置输出*/

{

sprintf(playone,”%d”,score1);

outtextxy(550,200,playone);

}

else

{

sprintf(playtwo,”%d”,score2);

outtextxy(550,300,playtwo);

}

setcolor(0);

}

void playWin()/*输出最后的胜利者结果*/

{

settextstyle(0,0,4);

setcolor(12);

if(score2score1)/*开始判断最后的结果*/

outtextxy(100,50,”black win!”);

else

if(score2score1)

outtextxy(100,50,”white win!”);

else

outtextxy(60,50,”you all win!”);

}

本文来自投稿,不代表【】观点,发布者:【

本文地址: ,如若转载,请注明出处!

举报投诉邮箱:253000106@qq.com

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2024年3月26日 18:41:23
下一篇 2024年3月26日 18:49:42

相关推荐

  • c语言调用外部函数,c语言在函数内部调用另一个函数

    C语言中,是否可以调用其它文件的函数? 1、C语言可以在程序中调用其他文件中的函数。在大型的程序软件开发中,为了代码的可读性,或多人同时进行代码开发,可以各写自己的源文件,然后,在编译时,将多个源文件链接到一起,就可以形成最终的目标程序。 2、不能,C语言中的static函数,内部函数和外部函数,函数一旦定义后就可被其它函数调用。当一个源程序由多个源文件组成…

    2024年5月21日
    3800
  • c语言截止符,c语言结束符

    c语言的语句结束标志是什么 1、c语言的语句结束标志是分号。在C语言中分号“;”用于结束一个语句,就如同平日常用的句号“。”作用一样。C程序是由C语言写的,能完成特定功能的一套完整的指令。组成这些指令的基本元素,称为语句。 2、C语言中语句结束标志为分号。C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、…

    2024年5月21日
    3400
  • 关于c语言脱壳的信息

    软件如何脱壳 脱壳需要的工具:调试器 比如IDA Pro、OllyDbg等等。调试器是进行逆向工程必不可少的工具,它可以帮助我们查看和分析程序内存、寄存器、堆栈等状态信息,方便我们定位和分析代码。脱壳软件 比如UPX、ASProtect、Themida等等。 步骤2脱壳 对一个加了壳的程序,去除其中无关的干扰信息和保护限制,把他的壳脱去,解除伪装,还原软件本…

    2024年5月21日
    4000
  • c语言char初始化,c语言 初始化

    c语言中char*的初始化问题 1、C语言允许用字符串的方式对数组作初始化赋值。 2、直接对变量进行赋予常量数值进行初始化;通过同类型变量进行初始化。 3、char**类型变量一般用于动态使用二维数组,操作方法如下:定义char**类型变量,初始化成NULL,或不初始化。 C语言中,局部函数中定义了一个char指针类型的变量,并初始化赋值,能将该&#8230…

    2024年5月21日
    2800
  • 贪吃蛇c语言代码vs,贪吃蛇的c语言代码

    求在VC++6.0中运行的贪吃蛇代码 1、最基础的贪吃蛇的代码#includestdio.h#includewindows.h//基本型态定义。支援型态定义函数。使用者界面函数 图形装置界面函数。 2、都要用到bios。h等头文件,他们在dev上是无法识别的,要识别只能把这些头文件给加到你的头文件库中。你遇到的问题,我都知道,另外即使你可以编译运行的话,同样…

    2024年5月21日
    3500
  • c语言编程程序,C语言编程程序自启动

    如何用c语言编写一个程序? 1、编辑,把程序代码输入,交给计算机。编译。 编译就是把高级语言变成计算机可以识别的2进制语言,计算机只认识1和0,编译程序把人们熟悉的语言换成2进制的。 2、写代码。这是最基础的一步,即实现C语言的源文件(.c,必需),和可能的头文件(.h,非必需)。2编译。将编写好的代码,通过编译工具,转换为目标文件。此步中,会对文件内部及包…

    2024年5月21日
    3900
  • c语言实验六答案,c语言实验6答案

    求C语言上机实验题答案!!! 1、以下选项中属于C语言的数据类型是( )。A. 复合型 B. 双精度型 C. 逻辑型 D. 集合型 以下说法中正确的是( )。 2、/*3 编写程序求出所有满足以下条件的四位数:其前两位数字与其后两位数字之和的平方等于该数本身。 3、字符需要用,大写字母的ascii码比小写字母小32,应该用减号。 C语言实验报告上答案1、实验…

    2024年5月21日
    3500
  • c语言加载dll,c语言加载背景音乐代码

    c语言怎么调用别人的dll文件 1、(1)编写程序时,你要包含(#include \什么.h\) dll文件作者提供 的 头文件(.h文件) 。程序里,便和普通函数调用一样,去调用它的函数。(2)程序编译时,你要链接 dll文件作者提供 的 (.lib文件) 库文件。 2、可以是可以,比较麻烦。方法我目前所知的有两种 一种是用C#写出COM组件,在系统中注册…

    2024年5月21日
    3700
  • 2014年江苏省c语言上机题,2017春3月江苏省c语言上机试卷c02

    C语言数据结构上机题 1、稀疏矩阵转置: 输入稀疏矩阵中每个元素的行号、列号、值,建立稀疏矩阵的三元组存储结构,并将此矩阵转置,显示转置前后的三元组结构。 2、: 因为要删除那些即在B表又在C表中的元素,所以A,B,C三个表中都会有这个元素。那么用指针遍历A表,用另外两个指针遍历B,C。查找B,C中同A的元素,因为3个表都是有序的,可以采用些简单的比较。找到…

    2024年5月21日
    3500
  • c语言中文件操作方式,c语言文件的操作方法

    用C语言实现文件读写操作 我们也可以在模式字符串中指定打开的模式,如rb表示以二进制模式打开只读文件,w+t或wt+表示以文本模式打开读/写文件。 使用fopen的r方式可以实现读取,用w+方式可以实现写入。 使用VS新建空工程,直接点击确定,如下所示。新建c文件,用于C语言编译器,输入main.c文件,如下所示。 C语言文件操作1、C语言对文件进行操作的三…

    2024年5月21日
    4400

发表回复

登录后才能评论



关注微信