| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 770 人关注过本帖
标题:五子棋源码
只看楼主 加入收藏
what!
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2010-5-18
收藏
 问题点数:0 回复次数:5 
五子棋源码
#include<graphics.h>
#include<stdio.h>
#include<conio.h>
#define MAX 20
#define LOCATE "E:\\TC20H"
#define FLASHCOUNTS 10
#define UP 0x4800
#define DOWN   0x5000
#define LEFT   0x4b00
#define RIGHT   0x4d00
#define ESC   0x11b
#define ENTER 0x1c0d

void draw(void);
void drawstone(int,int,int);
void delay(void);
void flash(int,int,int);
int move(int);
int initxy(int*,int*);
void initjudge(void);

typedef struct{
int flag;
int color;
}stone;

stone judge[15][15];   /*定义二维数组,记录位置和颜色*/

main()
{
int a,b,i,x,y;
clrscr();
a=VGA;
b=VGAHI;
initgraph(&a,&b,LOCATE);
cleardevice();
draw();
initjudge();
while(1)
{
   move(WHITE);
   move(BLACK);
}
getch();
closegraph();
}

void draw()      /*画棋盘*/
{
int i;
setfillstyle(1,YELLOW);
bar((640-MAX*15)/2,(480-MAX*15)/2,(640+MAX*15)/2,(480+MAX*15)/2);
setcolor(BLACK);
for(i=0;i<14;i++)
   line(0,(480-MAX*15)/2+(i+1)*MAX,640,(480-MAX*15)/2+(i+1)*MAX);
for(i=0;i<14;i++)
   line((640-MAX*15)/2+(i+1)*MAX,0,(640-MAX*15)/2+(i+1)*MAX,480);
setcolor(YELLOW);
rectangle((640-MAX*15)/2-2,(480-MAX*15)/2-2,(640+MAX*15)/2+2,(480+MAX*15)/2+2);
}

void drawstone(int x,int y,int color)   /*画棋子,x,y为行列数*/
{
int X,Y;                           /*X,Y为实际坐标*/
X=(640-MAX*15)/2+y*MAX-MAX/2;
Y=(480-MAX*15)/2+x*MAX-MAX/2;
setfillstyle(1,color);
setcolor(color);
circle(X,Y,MAX/2-1);
floodfill(X,Y,color);
}

void drawstone2(int x,int y,int color)   /*画棋子,但是有边*/
{
int X,Y;
drawstone(x,y,color);
X=(640-MAX*15)/2+y*MAX-MAX/2;
Y=(480-MAX*15)/2+x*MAX-MAX/2;
setcolor(GREEN);
circle(X,Y,MAX/2-1);
}

void initjudge(void)
{
int i,j;
for(i=0;i<14;i++)
for(j=0;j<14;j++)
   {
    judge[i][j].flag=0;
    judge[i][j].color=1;
   }
}

int initxy(int *x,int *y)
{
int i=0,j=0;
    for(i=0;i<15;i++)
     for(j=0;j<15;j++)
        {
     if(judge[i][j].flag==0)
       {
        (*x)=i+1;
        (*y)=j+1;
        return 1;
       }
        }
return 0;
}

int move(int color)
{
int key,x,y;
initxy(&x,&y);
drawstone2(x,y,color);
while(bioskey(1)==0)
{
   key=bioskey(0);
   switch(key)
   {
    case UP:
        if(x!=1&&judge[x-2][y-1].flag!=1)
        {
      drawstone(x,y,YELLOW);
      x--;
      drawstone2(x,y,color);
      }
     break;
    case DOWN:
     if(x!=15&&judge[x][y-1].flag!=1)
      {
        drawstone(x,y,YELLOW);
       x++;
       drawstone2(x,y,color); }
     break;
    case LEFT:
      if(y!=1&&judge[x-1][y-2].flag!=1)
        {
         drawstone(x,y,YELLOW);
        y--;
        drawstone2(x,y,color);}
     break;
    case RIGHT:
     if(y!=15&&judge[x-1][y].flag!=1)
      {
        drawstone(x,y,YELLOW);
       y++;
       drawstone2(x,y,color);}
     break;
    case ENTER:
     drawstone(x,y,color);
     judge[x-1][y-1].flag=1;
     judge[x-1][y-1].color=color;
     return 1;
    case ESC:exit(0);
    default:break;
   }
}
}
搜索更多相关主题的帖子: 五子棋 源码 
2010-05-18 22:08
日的起烟烟
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:137
专家分:129
注 册:2010-2-27
收藏
得分:0 
就这么点??··真的假的?
图片附件: 游客没有浏览图片的权限,请 登录注册


[ 本帖最后由 日的起烟烟 于 2010-5-18 22:18 编辑 ]
2010-05-18 22:15
what!
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2010-5-18
收藏
得分:0 
还还没测试

一分锺可以遇到一个人,一兲可以爱上一个人,但却要花上一生的时间来忘掉一个人
2010-05-18 22:19
冥卫
Rank: 8Rank: 8
来 自:深山老林
等 级:蝙蝠侠
帖 子:280
专家分:772
注 册:2010-4-20
收藏
得分:0 
调试过没有?
2010-05-18 22:29
what!
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2010-5-18
收藏
得分:0 
没,大家调试下,时间紧,马上中考了

一分锺可以遇到一个人,一兲可以爱上一个人,但却要花上一生的时间来忘掉一个人
2010-05-18 22:30
wu644877373
Rank: 2
来 自:湖南
等 级:论坛游民
帖 子:47
专家分:30
注 册:2010-5-11
收藏
得分:0 
额。。。感觉没这么简单。

2010-05-18 22:40
快速回复:五子棋源码
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020446 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved