vC++6.0做个五子棋程序的,然后通过mac鼠标双击没用落子,显示位图,但是怎么试,都没用

VC++6.0编程步骤_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
VC++6.0编程步骤
上传于||暂无简介
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
下载文档到电脑,查找使用更方便
还剩19页未读,继续阅读
你可能喜欢五子棋VC++_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
五子棋VC++
上传于||文档简介
&&V​C​+​+
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
下载文档到电脑,查找使用更方便
还剩7页未读,继续阅读
你可能喜欢五子棋的程序用C怎么编?_百度知道
五子棋的程序用C怎么编?
**********************************************************//* 程序中用到的库函数所在头文件应用 #include 命令包含进来 */#include &stdio.h&#include &bios.h&#include &ctype.h&#include &conio.h&#include &dos.h&/**********************************************************//* 定义符号常量
*//*定义画棋盘所需的制表符*/#define CROSSRU
/*右上角点*/#define CROSSLU
/*左上角点*/#define CROSSLD
/*左下角点*/#define CROSSRD
/*右下角点*/#define CROSSL
/*左边*/#define CROSSR
/*右边*/#define CROSSU
/*上边*/#define CROSSD
/*下边*/#define CROSS
/*十字交叉点*//*定义棋盘左上角点在屏幕上的位置*/#define MAPXOFT
5#define MAPYOFT
2/*定义1号玩家的操作键键码*/#define PLAY1UP
0x1157/*上移--'W'*/#define PLAY1DOWN
0x1f53/*下移--'S'*/#define PLAY1LEFT
0x1e41/*左移--'A'*/#define PLAY1RIGHT
0x2044/*右移--'D'*/#define PLAY1DO
0x3920/*落子--空格键*//*定义2号玩家的操作键键码*/#define PLAY2UP
0x4800/*上移--方向键up*/#define PLAY2DOWN
0x5000/*下移--方向键down*/#define PLAY2LEFT
0x4b00/*左移--方向键left*/#define PLAY2RIGHT
0x4d00/*右移--方向键right*/#define PLAY2DO
0x1c0d/*落子--回车键Enter*//*若想在游戏中途退出, 可按 Esc 键*/#define ESCAPE
0x011b/*定义棋盘上交叉点的状态, 即该点有无棋子 *//*若有棋子, 还应能指出是哪个玩家的棋子
*/#define CHESSNULL
//没有棋子#define CHESS1
'O'//一号玩家的棋子#define CHESS2
'X'//二号玩家的棋子/*定义按键类别*/#define KEYEXIT
0/*退出键*/#define KEYFALLCHESS
1/*落子键*/#define KEYMOVECURSOR
2/*光标移动键*/#define KEYINVALID
3/*无效键*//*定义符号常量: 真, 假 --- 真为1, 假为0 */#define TRUE
1#define FALSE
0/**********************************************************//* 定义数据结构
*//*棋盘交叉点坐标的数据结构*/struct point{
int x,y;};/**********************************************************//*自定义函数原型说明
*/void Init(void);int
GetKey(void);int CheckKey(int press);int
ChangeOrder(void);int
ChessGo(int Order,struct point Cursor);void DoError(void);void DoOK(void);void DoWin(int Order);void MoveCursor(int Order,int press);void DrawCross(int x,int y);void DrawMap(void);int
JudgeWin(int Order,struct point Cursor);int
JudgeWinLine(int Order,struct point Cursor,int direction);void ShowOrderMsg(int Order);void EndGame(void);/**********************************************************//**********************************************************//* 定义全局变量
/*指示当前行棋方
*/struct point gC
/*光标在棋盘上的位置
*/char gChessBoard[19][19];/*用于记录棋盘上各点的状态*//**********************************************************//**********************************************************//*主函数*/void main(){
int bOutWhile=FALSE;/*退出循环标志*/
Init();/*初始化图象,数据*/
press=GetKey();/*获取用户的按键值*/
switch(CheckKey(press))/*判断按键类别*/
/*是退出键*/
case KEYEXIT:
clrscr();/*清屏*/
bOutWhile = TRUE;
/*是落子键*/
case KEYFALLCHESS:
if(ChessGo(gPlayOrder,gCursor)==FALSE)/*走棋*/
DoError();/*落子错误*/
DoOK();/*落子正确*/
/*如果当前行棋方赢棋*/
if(JudgeWin(gPlayOrder,gCursor)==TRUE)
DoWin(gPlayOrder);
bOutWhile = TRUE;/*退出循环标志置为真*/
/*否则*/
/*交换行棋方*/
ChangeOrder();
/*是光标移动键*/
case KEYMOVECURSOR:
MoveCursor(gPlayOrder,press);
/*是无效键*/
case KEYINVALID:
if(bOutWhile==TRUE)
/*游戏结束*/
EndGame();}/**********************************************************//*界面初始化,数据初始化*/void Init(void){
char *Msg[]=
&Player1 key:&,
DO----space&,
&Player2 key:&,
UP----up&,
DOWN--down&,
LEFT--left&,
RIGHT-right&,
DO----ENTER&,
&exit game:&,
/*先手方为1号玩家*/
gPlayOrder = CHESS1;
/*棋盘数据清零, 即棋盘上各点开始的时候都没有棋子*/
for(i=0;i&19;i++)
for(j=0;j&19;j++)
gChessBoard[i][j]=CHESSNULL;
/*光标初始位置*/
gCursor.x=gCursor.y=0;
/*画棋盘*/
textmode(C40);
DrawMap();
/*显示操作键说明*/
textcolor(BROWN);
while(Msg[i]!=NULL)
gotoxy(25,3+i);
cputs(Msg[i]);
/*显示当前行棋方*/
ShowOrderMsg(gPlayOrder);
/*光标移至棋盘的左上角点处*/
gotoxy(gCursor.x+MAPXOFT,gCursor.y+MAPYOFT);}/*画棋盘*/void DrawMap(void){
for(i=0;i&19;i++)
for(j=0;j&19;j++)
DrawCross(i,j);}/*画棋盘上的交叉点*/void DrawCross(int x,int y){
gotoxy(x+MAPXOFT,y+MAPYOFT);
/*交叉点上是一号玩家的棋子*/
if(gChessBoard[x][y]==CHESS1)
textcolor(LIGHTBLUE);
putch(CHESS1);
/*交叉点上是二号玩家的棋子*/
if(gChessBoard[x][y]==CHESS2)
textcolor(LIGHTBLUE);
putch(CHESS2);
textcolor(GREEN);
/*左上角交叉点*/
if(x==0&&y==0)
putch(CROSSLU);
/*左下角交叉点*/
if(x==0&&y==18)
putch(CROSSLD);
/*右上角交叉点*/
if(x==18&&y==0)
putch(CROSSRU);
/*右下角交叉点*/
if(x==18&&y==18)
putch(CROSSRD);
/*左边界交叉点*/
putch(CROSSL);
/*右边界交叉点*/
putch(CROSSR);
/*上边界交叉点*/
putch(CROSSU);
/*下边界交叉点*/
putch(CROSSD);
/*棋盘中间的交叉点*/
putch(CROSS);}/*交换行棋方*/int ChangeOrder(void){
if(gPlayOrder==CHESS1)
gPlayOrder=CHESS2;
gPlayOrder=CHESS1;
return(gPlayOrder);}/*获取按键值*/int GetKey(void){
while (bioskey(1) == 0)/*如果用户没有按键,空循环*/
press=bioskey(0);
lowbyte=press&0
press=press&0xff00 + toupper(lowbyte);
return(press);}/*落子错误处理*/void DoError(void){
sound(1200);
delay(50);
nosound();}/*赢棋处理*/void DoWin(int Order){
sound(1500);delay(100);
delay(50);
sound(800); delay(100);
delay(50);
sound(1500);delay(100);
delay(50);
sound(800); delay(100);
delay(50);
nosound();
textcolor(RED+BLINK);
gotoxy(25,20);
if(Order==CHESS1)
cputs(&PLAYER1 WIN!&);
cputs(&PLAYER2 WIN!&);
gotoxy(25,21);
\\&^+^&/&);
getch();}/*走棋*/int
ChessGo(int Order,struct point Cursor){
/*判断交叉点上有无棋子*/
if(gChessBoard[Cursor.x][Cursor.y]==CHESSNULL)
/*若没有棋子, 则可以落子*/
gotoxy(Cursor.x+MAPXOFT,Cursor.y+MAPYOFT);
textcolor(LIGHTBLUE);
putch(Order);
gotoxy(Cursor.x+MAPXOFT,Cursor.y+MAPYOFT);
gChessBoard[Cursor.x][Cursor.y]=O
return TRUE;
return FALSE;}/*判断当前行棋方落子后是否赢棋*/int
JudgeWin(int Order,struct point Cursor){
for(i=0;i&4;i++)
/*判断在指定方向上是否有连续5个行棋方的棋子*/
if(JudgeWinLine(Order,Cursor,i))
return TRUE;
return FALSE;}/*判断在指定方向上是否有连续5个行棋方的棋子*/int
JudgeWinLine(int Order,struct point Cursor,int direction){
struct point pos,
const int testnum = 5;
switch(direction)
case 0:/*在水平方向*/
pos.x=Cursor.x-(testnum-1);
pos.y=Cursor.y;
case 1:/*在垂直方向*/
pos.x=Cursor.x;
pos.y=Cursor.y-(testnum-1);
case 2:/*在左下至右上的斜方向*/
pos.x=Cursor.x-(testnum-1);
pos.y=Cursor.y+(testnum-1);
dpos.y=-1;
case 3:/*在左上至右下的斜方向*/
pos.x=Cursor.x-(testnum-1);
pos.y=Cursor.y-(testnum-1);
for(i=0;i&testnum*2+1;i++)
if(pos.x&=0&&pos.x&=18&&pos.y&=0&&pos.y&=18)
if(gChessBoard[pos.x][pos.y]==Order)
if(count&=testnum)
return TRUE;
pos.x+=dpos.x;
pos.y+=dpos.y;
return FALSE;}/*移动光标*/void MoveCursor(int Order,int press){
switch(press)
case PLAY1UP:
if(Order==CHESS1&&gCursor.y&0)
gCursor.y--;
case PLAY1DOWN:
if(Order==CHESS1&&gCursor.y&18)
gCursor.y++;
case PLAY1LEFT:
if(Order==CHESS1&&gCursor.x&0)
gCursor.x--;
case PLAY1RIGHT:
if(Order==CHESS1&&gCursor.x&18)
gCursor.x++;
case PLAY2UP:
if(Order==CHESS2&&gCursor.y&0)
gCursor.y--;
case PLAY2DOWN:
if(Order==CHESS2&&gCursor.y&18)
gCursor.y++;
case PLAY2LEFT:
if(Order==CHESS2&&gCursor.x&0)
gCursor.x--;
case PLAY2RIGHT:
if(Order==CHESS2&&gCursor.x&18)
gCursor.x++;
gotoxy(gCursor.x+MAPXOFT,gCursor.y+MAPYOFT);}/*游戏结束处理*/void EndGame(void){
textmode(C80);}/*显示当前行棋方*/void ShowOrderMsg(int Order){
gotoxy(6,MAPYOFT+20);
textcolor(LIGHTRED);
if(Order==CHESS1)
cputs(&Player1 go!&);
cputs(&Player2 go!&);
gotoxy(gCursor.x+MAPXOFT,gCursor.y+MAPYOFT);}/*落子正确处理*/void DoOK(void){
sound(500);
delay(70);
sound(600);
delay(50);
sound(1000);
delay(100);
nosound();}/*检查用户的按键类别*/int CheckKey(int press){
if(press==ESCAPE)
return KEYEXIT;/*是退出键*/
( ( press==PLAY1DO && gPlayOrder==CHESS1) ||
( press==PLAY2DO && gPlayOrder==CHESS2)
return KEYFALLCHESS;/*是落子键*/
( press==PLAY1UP
|| press==PLAY1DOWN
press==PLAY1LEFT || press==PLAY1RIGHT ||
press==PLAY2UP
|| press==PLAY2DOWN
press==PLAY2LEFT || press==PLAY2RIGHT
return KEYMOVECURSOR;/*是光标移动键*/
return KEYINVALID;/*按键无效*/}
其他类似问题
为您推荐:
提问者采纳
///pause&&#47.h&///) { up(); } else { printf(&// char input, y) == 1) { return 1; printf(&// return 1; } void startGame() { void init();=16 && y&/ #include &/ chess = 1; player1 = 0;nPlayer%///&#47, int y);///;/nwsad为上下左右;///// } } player1 = 1;) { left(); i&/ int plus_diagonal(//= 20) { focus_x = 20,只是实现了五子棋的功能;/Player1; return 1; chess = 1;/%-3d& system(&5, int y) { int horizontal(// } else { focus_y++;// return 1;21;/);/) { right();/// } } } if (chess & void go(); i++) { if (array[x][y] == array[x+i][y]) { chess++;n& } int judge( j++) { if (i==focus_x && j==focus_y) { printf(&/ Construction//// for (i=0,每个操作需按Enter确认(比如上要按w再按Enter); init();) { down();&#47, y) == 1) { return 1; } 本人菜鸟一个; } printChessBoard();) { go();/=4 && y& int focus_y;/////=16) { for (i=1;k' if (x & i++) { for (j=0;= 20) { focus_y = 20;n&/// int vertical(////&#47:\ printf(&/ } else { printf(& } int minus_diagonal(//游戏提示;/ i&lt,其实不能算游戏;21;n&&#47, int y) {/// } } } } return 0;// /////&#47,在VC++6.0上写出此拙劣的程序;/ i&/21;/b[%d] &quot, int y) {/&#47. // control();/&#47, y) == 1) { return 1;a' } int vertical(/ void left(); system(&/// checkGameOver();/ chess = 1;
int player2;/ } return 0;); } return 0, startGame();// } void printChessBoard() { }
void init() {&#47, int y) { } if (input == &#39,21;/ } } printf(&// #include & } } void go() { int chessman = array[focus_x][focus_y];// i&/ void control();///// i++) { if (array[x][y] == array[x][y+i]) { chess++; } if (winner == 0) { if (player1 == 1) { printf(&quot!= 0) { if(judge(i;);/ void printChessBoard();/ if (chessman == 0) { if (player1 == 1) { array[focus_x][focus_y] = 1;/s' } } void right() { if (focus_y & if (x&gt, array[i][j]);/= 16) { for (i=1;/ int focus_x; focus_x = 10; for (i=0;/= 16) { for (i=1;////&#47: &// } else { focus_x++;21;= 5) { winner = array[x][y]; } } }
int checkGameOver() { void down();stdlib, int y);&#47,w'/// } if (input == ' } } } if (chess &/= 0) { focus_y = 0;////\ player1 = 1; return 0;\ } return 0; chess = 1, j, int y);/ i++) { for (j=0;/ } } void left() { if (focus_y & } } } if (chess & j++) { if (array[i][j] ;////&#47, int y);// for (i=0;&#47,// } if (vertical(x;cls& int array[21][21]; } return 0;/ } if (input == '21,走棋为k\/&#47,/ i++) { if (array[x][y] == array[x-i][y+i]) { chess++, j) == 1) { return 1;n\/ } } void down() { if (focus_x & // /// } } }
void control() { void up();d'///&#47, array[i][j]);//= 0) { focus_x = 0;///// void right();/ j& } else { focus_x--;// } if (input == '/// return 1;// if (input == ' while (winner == 0) { printChessBoard();/;/ if (horizontal(x;=16) { for (i=1: &/// } } } if (chess &\
int main() { void startGame();/ j&/&#47.h&// int judge(/ int player1;5; } if (plus_diagonal(x;/ i++) { for (j=0;// } int horizontal(/); #include &/= 5) { winner = array[x][y];&#47: implementation of the G= 5) { winner = array[x][y];/ i&// G/////&#47,//5;&#47, y) == 1) { return 1; if (y &&#47。麻烦采纳.= 5) { winner = array[x][y];5;// i& } return 0; player2 = 0;Destruction / } else { focus_y--; j++) { array[i][j] = 0!\ i++) { if (array[x][y] == array[x+i][y+i]) { chess++, winner);////&#47.h&/ player2 = 0, int y) {/ if (x&/ player2 = 1;/ } if (minus_diagonal(x;); focus_y = 10;///Player2; int checkGameOver(); int minus_diagonal(&#47, int y); input = getchar(),谢谢;/ } else { array[focus_x][focus_y] = 2; j&/ i&/),有兴趣可以一起研究; } int plus_diagonal( } } void up() { if (focus_x &lt
五子棋的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
VC++简易五子棋游戏实现.doc55页
本文档一共被下载:
次 ,您可免费全文在线阅读后下载本文档
文档加载中...广告还剩秒
需要金币:120 &&
你可能关注的文档:
··········
··········
审定成绩:
重庆邮电大学
毕业设计(论文)
设计(论文)题目:
填表时间:年月
重庆邮电大学教务处制
Nowadays, the game industry’s rapid development not only causes it to become one of the social popular professions, moreover the computer game developed already became one of the most powerful hands behind of the IT technological innovation. Game developers and gamers the forefront of computer technology is often the earliest adopters.
The Gobang is a well- its rules are simple and varied. It not only can enhance the thinking ability, improve the intelligence and rich in philosophy will help self-cultivation.
This system uses renju game as the research object, and designed two different patterns of the renju game: the “Man-Computer against” and “the Net-Online Play”. In addition, it gives a preliminary discussion about the related technologies involved in, key for in Man-Computer against model’s AI algorithm research.
【Key words】AI Game Algorithm
Network Service
电脑游戏简介 2
一、什么是游戏 2
二、电脑游戏 2
三、五子棋游戏简介 6
开发平台及关键技术简介 7
一、开发环境 7
二、Visual C++简介 7
三、人工智能概念 8
四、网络编程技术 9
本章小结 9
第二章 需求分析 10
可行性分析 10
一、问题定义 10
二、可行性研究 10
用户需求分析 11
一、系统功能需求 11
二、一般性描述 12
三、目标系统其它需求 16
本章小结 16
第三章 软件系统设计与实现 17
概要设计 17
一、设计指导思想 17
二、小小五子棋游戏软件结构图 18
三、数据设计 18
详细设计与实现 19
一、初始登陆界面
正在加载中,请稍后...

我要回帖

更多关于 双击音量键防误触没用 的文章

 

随机推荐