文档库 最新最全的文档下载
当前位置:文档库 › 中国象棋源代码-C语言小程序

中国象棋源代码-C语言小程序

中国象棋源代码-C语言小程序
中国象棋源代码-C语言小程序

*--------------------chess.c----------------------*/ #include "dos.h"

#include "stdio.h"

/*----------------------------------------------------*/ #define RED 7

#define BLACK 14

#define true 1

#define false 0

#define SELECT 0

#define MOVE 1

#define RED_UP 0x1100

#define RED_DOWN 0x1f00

#define RED_LEFT 0x1e00

#define RED_RIGHT 0x2000

#define RED_DO 0x3900

#define RED_UNDO 0x1000

#define BLACK_UP 0x4800

#define BLACK_DOWN 0x5000

#define BLACK_LEFT 0x4b00

#define BLACK_RIGHT 0x4d00

#define BLACK_DO 0x1c00

#define BLACK_UNDO 0x2b00

#define ESCAPE 0x0100

#define RED_JU 1

#define RED_MA 2

#define RED_XIANG 3

#define RED_SHI 4

#define RED_JIANG 5

#define RED_PAO 6

#define RED_BIN 7

#define BLACK_JU 8

#define BLACK_MA 9

#define BLACK_XIANG 10

#define BLACK_SHI 11

#define BLACK_JIANG 12

#define BLACK_PAO 13

#define BLACK_BIN 14

/*----------------------------------------------------*/ int firsttime=1;

int savemode;

char page_new=0,page_old=0;

int finish=false,turn=BLACK,winner=0;

int key;

int redstate=SELECT,blackstate=SELECT;

int board[10][9];

/*----------------------------------------------------*/

char *chessfile[15]={"",

"bmp\\rju.wfb", "bmp\\rma.wfb", "bmp\\rxiang.wfb","bmp\\rshi.wfb",

"bmp\\rjiang.wfb","bmp\\rpao.wfb","bmp\\rbin.wfb",

"bmp\\bju.wfb", "bmp\\bma.wfb", "bmp\\bxiang.wfb","bmp\\bshi.wfb",

"bmp\\bjiang.wfb","bmp\\bpao.wfb","bmp\\bbin.wfb"

};

char *boardfile[10][9]={

{"bmp\\11.wfb","bmp\\1t.wfb","bmp\\1t.wfb","bmp\\14.wfb","bmp\\15.wfb","bmp\\16.wfb"," bmp\\1t.wfb","bmp\\1t.wfb","bmp\\19.wfb"},

{"bmp\\21.wfb","bmp\\2c.wfb","bmp\\2c.wfb","bmp\\24.wfb","bmp\\25.wfb","bmp\\26.wfb"," bmp\\2c.wfb","bmp\\2c.wfb","bmp\\29.wfb"},

{"bmp\\21.wfb","bmp\\3a.wfb","bmp\\3t.wfb","bmp\\34.wfb","bmp\\3t.wfb","bmp\\36.wfb"," bmp\\3t.wfb","bmp\\3a.wfb","bmp\\29.wfb"},

{"bmp\\41.wfb","bmp\\4t.wfb","bmp\\4a.wfb","bmp\\4t.wfb","bmp\\4a.wfb","bmp\\4t.wfb","b mp\\4a.wfb","bmp\\4t.wfb","bmp\\49.wfb"},

{"bmp\\51.wfb","bmp\\52.wfb","bmp\\5t.wfb","bmp\\54.wfb","bmp\\5t.wfb","bmp\\56.wfb"," bmp\\5t.wfb","bmp\\58.wfb","bmp\\59.wfb"},

{"bmp\\61.wfb","bmp\\62.wfb","bmp\\6t.wfb","bmp\\64.wfb","bmp\\6t.wfb","bmp\\66.wfb"," bmp\\6t.wfb","bmp\\68.wfb","bmp\\69.wfb"},

{"bmp\\71.wfb","bmp\\7t.wfb","bmp\\7a.wfb","bmp\\7t.wfb","bmp\\7a.wfb","bmp\\7t.wfb","b mp\\7a.wfb","bmp\\7t.wfb","bmp\\79.wfb"},

{"bmp\\81.wfb","bmp\\8a.wfb","bmp\\8t.wfb","bmp\\84.wfb","bmp\\85.wfb","bmp\\86.wfb"," bmp\\8t.wfb","bmp\\8a.wfb","bmp\\89.wfb"},

{"bmp\\91.wfb","bmp\\9t.wfb","bmp\\9t.wfb","bmp\\9t.wfb","bmp\\95.wfb","bmp\\9t.wfb","b mp\\9t.wfb","bmp\\9t.wfb","bmp\\99.wfb"},

{"bmp\\101.wfb","bmp\\102.wfb","bmp\\102.wfb","bmp\\104.wfb","bmp\\105.wfb","bmp\\10 6.wfb","bmp\\108.wfb","bmp\\108.wfb","bmp\\109.wfb"}

};

char cursor[14][14]={

0,0,0,0,0,0,0,0,0,0,0,0,1,1,

0,0,0,0,0,0,0,0,0,0,0,1,1,1,

0,255,255,255,255,255,255,255,0,0,1,1,1,1,

0,255,255,255,255,255,255,0,0,1,1,1,1,1,

0,255,255,255,255,255,255,0,0,1,1,1,1,1,

0,255,255,255,255,255,255,255,0,0,1,1,1,1,

0,255,255,255,255,255,255,255,255,0,0,1,1,1,

0,255,255,255,255,255,255,255,255,255,0,0,1,1,

0,255,255,0,255,255,255,255,255,255,255,0,0,1,

0,255,0,1,1,0,255,255,255,255,255,255,255,0,

0,0,1,1,1,1,0,255,255,255,255,255,0,1,

0,1,1,1,1,1,1,0,255,255,255,0,1,1,

1,1,1,1,1,1,1,1,0,255,0,1,1,1,

1,1,1,1,1,1,1,1,1,0,1,1,1,1

};

struct pos{

int x;

int y;

}position[10][9],redcurpos,redtemppos,redoldpos,blackcurpos,blacktemppos,blackoldpos; /*----------------------------------------------------*/

selectpage(register char page) /*换页函数*/

{

union REGS r;

r.x.ax=0x4f05;

r.x.bx=0;

r.x.dx=page; /*选择页面*/

int86(0x10,&r,&r);

}

unsigned char set_SVGA_mode(int vmode) /*设置SVGA屏幕模式*/

{

union REGS r;

r.x.ax=0x4f02;

r.x.bx=vmode;

int86(0x10,&r,&r);

return(r.h.ah);

}

unsigned int get_SVGA_mode() /*获取当前SVGA屏幕模式*/

{

union REGS r;

r.x.ax=0x4f03;

int86(0x10,&r,&r);

return(r.x.bx);

}

drawbmp(int start_x,int start_y,char filename[])

{

char buffer[640];

int i,j,k,n,r,g,b,width,length;

long position;

FILE *fp;

if((fp=fopen(filename,"rb"))==NULL)

{

printf("Error! Can't open file!");

getch();

return;

}

fseek(fp,28,SEEK_SET);

fread(&i,2,1,fp);

if(i!=8) /*检查是否为256色位图*/

{

puts("Error!Can't find bitmap!");

fclose(fp);

getch();

exit(0);

}

fseek(fp,18,SEEK_SET);

fread(&width,4,1,fp);

fread(&length,4,1,fp);

if(firsttime)

{

fseek(fp,54,SEEK_SET);

for(i=0;i<256;i++) /*按照该图片的DAC色表设置色彩寄存器*/

{

b=fgetc(fp);g=fgetc(fp);r=fgetc(fp); /*获取R、G、B分量*/

outportb(0x3c8,i);

outportb(0x3c9,r>>2); /*右移是要转化为VGA的6位寄存器形式*/ outportb(0x3c9,g>>2);

outportb(0x3c9,b>>2);

fgetc(fp);

}

}

else

fseek(fp,300,SEEK_SET);

k=(width%4)?(4-width%4):0; /*宽度修正值*/

for(j=length-1+start_x;j>=start_x;j--)

{

fread(buffer,width,1,fp);

for(i=start_y,n=0;i

{

position=j*640l+i; /*计算要显示点的显存位置*/

page_new=position/65536; /*计算显示页*/

if(page_new!=page_old) /*当显示页不同时更换页面,提高一定的输出速度*/

{selectpage(page_new);page_old=page_new;}

pokeb(0xa000,position%65536,buffer[n]); /*写到显存位置*/

}

fseek(fp,k,SEEK_CUR); /*每行绘制完后修正宽度*/

}

fclose(fp);

}

init()

{

savemode=get_SVGA_mode(); /*先保存原来的屏幕模式*/

set_SVGA_mode(0x101); /*硬件无关性初始化屏幕为640*480 256色模式*/ }

end()

{

set_SVGA_mode(savemode); /*恢复屏幕*/

}

/*----------------------------------------------------*/

initpos()

{

int i,j;

for(i=0;i<10;i++)

for (j=0;j<9;j++)

{

position[i][j].x=35+i*39;

position[i][j].y=43+j*40;

}

}

initchessmap()

{

board[0][0]=BLACK_JU;

board[0][1]=BLACK_MA;

board[0][2]=BLACK_XIANG;

board[0][3]=BLACK_SHI;

board[0][4]=BLACK_JIANG;

board[0][5]=BLACK_SHI;

board[0][6]=BLACK_XIANG;

board[0][7]=BLACK_MA;

board[0][8]=BLACK_JU;

board[2][1]=BLACK_PAO;

board[2][7]=BLACK_PAO;

board[3][0]=BLACK_BIN;

board[3][2]=BLACK_BIN;

board[3][4]=BLACK_BIN;

board[3][6]=BLACK_BIN;

board[3][8]=BLACK_BIN;

board[9][0]=RED_JU;

board[9][1]=RED_MA;

board[9][2]=RED_XIANG;

board[9][3]=RED_SHI;

board[9][4]=RED_JIANG;

board[9][5]=RED_SHI;

board[9][6]=RED_XIANG;

board[9][7]=RED_MA;

board[9][8]=RED_JU;

board[7][1]=RED_PAO;

board[7][7]=RED_PAO;

board[6][0]=RED_BIN;

board[6][2]=RED_BIN;

board[6][4]=RED_BIN;

board[6][6]=RED_BIN;

board[6][8]=RED_BIN;

}

initdrawchess()

{

int i,j;;

for(i=0;i<10;i++)

for(j=0;j<9;j++)

{

if(board[i][j])

drawbmp(position[i][j].x,position[i][j].y,chessfile[board[i][j]]); }

}

drawcursor(struct pos p)

{

int i,j,n,m,x,y;

long thisposition;

x=position[p.x][p.y].x+20;

y=position[p.x][p.y].y+25;

for(j=13-1+x,m=13;j>=x;j--,m--)

{

for(i=y,n=0;i<13+y;i++,n++)

{

thisposition=j*640l+i; /*计算要显示点的显存位置*/

page_new=thisposition/65536; /*计算显示页*/

if(page_new!=page_old) /*当显示页不同时更换页面,提高一定的输出速度*/ {selectpage(page_new);page_old=page_new;}

if(cursor[m][n]!=1)

if(cursor[m][n]==0)

pokeb(0xa000,thisposition%65536,0);

else

if(turn==RED)

pokeb(0xa000,thisposition%65536,153);

else

pokeb(0xa000,thisposition%65536,255);

}

}

}

drawselecursor(struct pos p)

{

int i,j,n,m,x,y;

long thisposition;

x=position[p.x][p.y].x+20;

y=position[p.x][p.y].y+25;

for(j=13-1+x,m=13;j>=x;j--,m--)

{

for(i=y,n=0;i<13+y;i++,n++)

{

thisposition=j*640l+i; /*计算要显示点的显存位置*/

page_new=thisposition/65536; /*计算显示页*/

if(page_new!=page_old) /*当显示页不同时更换页面,提高一定的输出速度*/ {selectpage(page_new);page_old=page_new;}

if(cursor[m][n]!=1)

pokeb(0xa000,thisposition%65536,0);

}

}

}

/*----------------------------------------------------*/

int getkey()

{

int press;

while(bioskey(1) == 0);

press=bioskey(0);

press=press&0xff00;

return(press);

}

/*--------------------红方操作--------------------*/

int redcanselect()

{

int x,y;

x=redcurpos.x;

y=redcurpos.y;

if(board[x][y]>=RED_JU&&board[x][y]<=RED_BIN)

return 1;

else

return 0;

}

int redcanmove()

{

int i,j,min,max,oldx,oldy,x,y;

oldx=redoldpos.x;

oldy=redoldpos.y;

x=redcurpos.x;

y=redcurpos.y;

/*case1 目标位置是否是自己人*/

if(board[x][y]>=RED_JU&&board[x][y]<=RED_BIN)

return 0;

/* 军、马、炮、相、士、将、卒的走法正确性的判断*/ switch(board[oldx][oldy])

{

case RED_BIN: /*完成*/

if(oldx>=5)

{ if(y!=oldy||(oldx-x)!=1) return 0;}

else

{ if(x==(oldx-1)&&y==oldy) return 1;

else

if(x==oldx&&y==(oldy+1)) return 1;

else

if(x==oldx&&y==(oldy-1)) return 1;

else

return 0;

}

break;

case RED_JIANG: /*完成*/

if(x!=oldx&&y!=oldy) return 0;

if(x!=oldx)

if((x-oldx)>1||(oldx-x)>1) return 0;

else if(x<7) return 0;

else if(y!=oldy)

if((y-oldy)>1||(oldy-y)>1) return 0;

else if(y<3||y>5) return 0;

break;

case RED_JU: /*完成*/

if(x!=oldx&&y!=oldy) return 0;

else if(x!=oldx)

{ min=(x>oldx)?oldx:x;

max=(x>oldx)?x:oldx;

for(i=min+1;i

if(board[i][y]!=0) return 0;

}

else if(y!=oldy)

{ min=(y>oldy)?oldy:y;

max=(y>oldy)?y:oldy;

for(i=min+1;i

if(board[x][i]!=0) return 0;

}

break;

case RED_MA: /*完成*/

if((x-oldx)==2&&((y-oldy)==1||(oldy-y)==1)) {

if(board[oldx+1][oldy]!=0) return 0;

}else

if((oldx-x)==2&&((y-oldy)==1||(oldy-y)==1)) {

if(board[oldx-1][oldy]!=0) return 0;

}else

if((y-oldy)==2&&((x-oldx)==1||(oldx-x)==1)) {

if(board[oldx][oldy+1]!=0) return 0;

}else

if((oldy-y)==2&&((x-oldx)==1||(oldx-x)==1)) {

if(board[oldx][oldy-1]!=0) return 0;

}else

return 0;

break;

case RED_PAO: /*完成*/

if(x!=oldx&&y!=oldy) return 0;

if(board[x][y]==0)

{

if(x!=oldx)

{ min=(x>oldx)?oldx:x;

max=(x>oldx)?x:oldx;

for(i=min+1;i

if(board[i][y]!=0) return 0; }

else if(y!=oldy)

{ min=(y>oldy)?oldy:y; max=(y>oldy)?y:oldy;

for(i=min+1;i

if(board[x][i]!=0) return 0; }

}

else

{

if(x!=oldx)

{ min=(x>oldx)?oldx:x; max=(x>oldx)?x:oldx;

for(i=min+1,j=0;i

if(j!=1) return 0;

}

else if(y!=oldy)

{ min=(y>oldy)?oldy:y; max=(y>oldy)?y:oldy;

for(i=min+1,j=0;i

if(j!=1) return 0;

}

}

break;

case RED_SHI: /*完成*/

if(oldx==9||oldx==7)

{if(x!=8||y!=4) return 0;} else if(oldx==8)

{if(x==9&&y==3) return 1; else

if(x==9&&y==5) return 1; else

if(x==7&&y==3) return 1; else

if(x==7&&y==5) return 1; else return 0;

}else return 0;

break;

case RED_XIANG: /*完成*/ if(x<5) return 0;

if(x!=oldx&&y!=oldy)

{

if((x-oldx)==2&&(y-oldy)==2)

{i=oldx+1;j=oldy+1;}

else if((x-oldx)==2&&(oldy-y)==2) {i=oldx+1;j=oldy-1;}

else if((oldx-x)==2&&(y-oldy)==2) {i=oldx-1;j=oldy+1;}

else if((oldx-x)==2&&(oldy-y)==2) {i=oldx-1;j=oldy-1;}

else return 0;

if(board[i][j]!=0) return 0;

}

else return 0;

break;

}

return 1;

}

中国象棋源代码Java程序

import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.util.*; import java.io.*; public class Chess{ public static void main(String args[]){ new ChessMainFrame("中国象棋:观棋不语真君子,棋死无悔大丈夫"); } } class ChessMainFrame extends JFrame implements ActionListener,MouseListener,Runnable{ //玩家 JLabel play[] = new JLabel[32]; //棋盘 JLabel image; //窗格 Container con; //工具栏 JToolBar jmain; //重新开始 JButton anew; //悔棋 JButton repent; //退出 JButton exit; //当前信息 JLabel text; //保存当前操作 Vector Var; //规则类对象(使于调用方法) ChessRule rule; /** ** 单击棋子 ** chessManClick = true 闪烁棋子并给线程响应 ** chessManClick = false 吃棋子停止闪烁并给线程响应 */ boolean chessManClick;

/** ** 控制玩家走棋 ** chessPlayClick=1 黑棋走棋 ** chessPlayClick=2 红棋走棋默认红棋 ** chessPlayClick=3 双方都不能走棋 */ int chessPlayClick=2; //控制棋子闪烁的线程 Thread tmain; //把第一次的单击棋子给线程响应 static int Man,i; ChessMainFrame(){ new ChessMainFrame("中国象棋"); } /** ** 构造函数 ** 初始化图形用户界面 */ ChessMainFrame(String Title){ //获行客格引用 con = this.getContentPane(); con.setLayout(null); //实例化规则类 rule = new ChessRule(); Var = new Vector(); //创建工具栏 jmain = new JToolBar(); text = new JLabel("欢迎使用象棋对弈系统"); //当鼠标放上显示信息 text.setToolTipText("信息提示"); anew = new JButton(" 新游戏 "); anew.setToolTipText("重新开始新的一局"); exit = new JButton(" 退出 "); exit.setToolTipText("退出象棋程序程序"); repent = new JButton(" 悔棋 "); repent.setToolTipText("返回到上次走棋的位置"); //把组件添加到工具栏 jmain.setLayout(new GridLayout(0,4)); jmain.add(anew);

C语言程序设计第三版谭浩强课后习题答案完整版

1.6 编写一个程序,输入a、b、c 三个值,输出其中最大值。 课后习题答案完整版 第一章 1.5 请参照本章例题,编写一个C 程序,输出以下信息: ************************** Very Good! ************************** 解:mian() {int a,b,c,max; printf( “请输入三个数a,b,c:\n ” ); scanf( “%d,%d,%”d ,&a,&b,&c); C语言程序设计第三版谭浩强 解: mian() {printf( ”); “************************** printf( “”X “ n” ); printf( “Very Good!” \ n”); printf( “”X “ n” ); printf( “************************** ); max=a; if(max

{char #include c1='a',c2='b',c3= 'c',c4= ' \101 ',c5= ' 116'; printf( “a%cb%c n”,c1,c2,c 3); printf( “ b%c %c” ,c4,c5); } 解: aa 口bb 口口口cc 口口口口口口abc A 口N 3.7 要将"China" 译成密码,译码规律是:用原来字母后面的第 4 个字母代替原来的字母.例如,字母"A" 后面第 4 个字母是"E" . "E"代替"A"。因此,"China"应译为"Glmre" 。请编一程序,用赋初值的方法使cl 、c2、c3、c4、c5 五个变量的值分别为, ' C'、h'、i '、n'、a'经过运算,使cl、c2、c3、c4、c5分别变为'G'、' I '、' m >' r'、’ e',并输出。main() { char c1=' C' ,c2=' h' ,c3= ' i ' ,c4= ' n' ,c 5=' a' ; c1+=4; c2+=4; c3+=4; c4+=4; c5+=4; printf(" 密码是%c%c%c%c%c\n",c1,c2,c3,c4,c5); } 运行结果: 密码是GImre 3.9 求下面算术表达式的值。 解: 1 )x+a%3*(int)(x+y)%2/4

C语言程序设计习题答案(1-5章)

C 语言程序设计习题答案 习题一 C 语言程序设计概述 一、名词解释 (1)程序P1 (2)程序设计P1 (3)机器语言P1 (4)汇编程序P2 (5)高级语言P2 (6)编译程序P3 (7)解释程序P3 (8)算法P4 (9)结构化的程序设计P9 二、简述题 1. 设计程序时应遵循哪些基本原则?P4 答:正确性、可靠性、简明性、有效性、可维护性、可移植性。 2. 算法的要素是什么?算法具有哪些特点? 答:算法的要素是:操作与控制结构;算法的特点有:有穷性、确定性、有效性、有零个或多个输入、有一个或多个输出。 3. 算法的表示形式有哪几种? 答:算法的表示形式有:自然语言、传统流程图、伪代码、结构化的流程图(N_S 流程图,盒图)。 4. 有哪三种基本结构? 答:三种基本结构是:顺序结构、选择结构和循环结构。 5. 传统流程图与N-S 流程图最大的区别是什么? 答:N-S 流程图去掉了在传统流程图中常用的流程线,使得程序的结构显得更加清晰、简单。 三、用传统流程图、N-S 图分别表示求解以下问题的算法。 1. 有3个数a ,b ,c ,要求按由大到小的顺序把它们输出。 2. 依次将10个数输入,求出其中最大的数 和最小的数并输出。 3. 求1+2+3+…+100的值。 4. 求1×2×3×…×10的值。

5. 求下列分段函数的值。 6. 求100~200之间的所有素数。 7. 求一元二次方程ax 2+bx+c=0的根。分别考虑d=b 2-4ac 大于0、等于0和小于0三种情况。 四、注释下面C 程序的各个组成部分。 main() /*主函数 */ { /*程序开始 */ int a,k,m; /*定义三个用来存放整数的变量 */ a=10; /*将整数10赋值给变量a */ k=2; /*将整数2赋值给变量k */ m=1; /*将整数1赋值给变量1 */ a=(k+m)*k/(k-m); /*先求出算术表达式的值,并将其赋值给变量a */ printf("%d\n",a); /*在屏幕上打印出变量a 的值 */ } /*程序结束 */ 习题二 数据类型、运算符与表达式 一、选择题 1~10:BCDCB DDBCA 11~20: ADDAA DBADC 21~28: DABAD CDD 3X (X<1) 4X-1 (X=1) 5(X-1)+6 (1

中国象棋(代码)

中国象棋(web版源代码) 程序: using System; using System.Collections; using System.Configuration; using System.Data; using System.Linq; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Xml.Linq; using System.Data.SqlClient; namespace WebApplication1 {

public partial class WebForm1 : System.Web.UI.Page { int tru = 20; int fals = 40; public ImageButton[,] _Image=new ImageButton[11,10]; //将上一次点击点的坐标保存到数据库中的lastx和lasty public void SaveToLast() { if (Session["user"].ToString() == "red" && _GetUserState(Session["user"].ToString()) == 20) { int x, y, lastx, lasty; x = Getpointx(); y = Getpointy(); lastx = x; lasty = y; Updatalastx(lastx); Updatalasty(lasty); } if (Session["user"].ToString() == "black" && _GetUserState(Session["user"].ToString()) == 20) { int x, y, lastx, lasty; x = Getpointx(); y = Getpointy(); lastx = x; lasty = y; Updatalastx(lastx); Updatalasty(lasty); } } //将棋盘上所有棋子图片显示到棋盘上 private void _Drawqizi() { //_Init(); int i,j,k; if (_GetUserState("red") != 0 && _GetUserState("black") != 0)

中国象棋源代码-C语言小程序

*--------------------chess.c----------------------*/ #include "dos.h" #include "stdio.h" /*----------------------------------------------------*/ #define RED 7 #define BLACK 14 #define true 1 #define false 0 #define SELECT 0 #define MOVE 1 #define RED_UP 0x1100 #define RED_DOWN 0x1f00 #define RED_LEFT 0x1e00 #define RED_RIGHT 0x2000 #define RED_DO 0x3900 #define RED_UNDO 0x1000 #define BLACK_UP 0x4800 #define BLACK_DOWN 0x5000 #define BLACK_LEFT 0x4b00 #define BLACK_RIGHT 0x4d00 #define BLACK_DO 0x1c00 #define BLACK_UNDO 0x2b00 #define ESCAPE 0x0100 #define RED_JU 1 #define RED_MA 2 #define RED_XIANG 3 #define RED_SHI 4 #define RED_JIANG 5 #define RED_PAO 6 #define RED_BIN 7 #define BLACK_JU 8 #define BLACK_MA 9 #define BLACK_XIANG 10 #define BLACK_SHI 11 #define BLACK_JIANG 12 #define BLACK_PAO 13 #define BLACK_BIN 14 /*----------------------------------------------------*/ int firsttime=1; int savemode;

C语言程序设计第三版习题库答案

C 语言程序设计(第三版)习题库 1、设圆半径r=,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf 输入数据,输出计算结果,输出时要求文字说明,取小数点后两位数字。请编程序。 #include<> main(){ floatr,h,C1,Sa,Sb,Va,Vb; scanf(__”%f ”__,&r); scanf(”%d ”,__&h _);; C1=2**r; Sa=*r*r; Sb=4*Sa; Va=4**r*r*r/3; Vb=Sa*h; printf(___”Cl=%.2fSa=%.2fSb=%.2fVa=%.2fVb=%.2f ”,Cl,Sa,Sb,Va,Vb ); } 2、输入一个华氏温度,要求输出摄氏温度。公式为c=5(F-32)/9 输出要求有文字说明,取位2小数。 #include<> main(){ floatF,c; scanf("%f",&F); ____c=5*(F-32)/9______; printf("c=%.2f",c); } 3、有一函数:?? ???≥-<≤-<=10113101121x x x x x x y 写一程序,输入x 值,输出y 值。 #include<> main(){ intx,y; printf("输入x :"); scanf("%d",&x); if(x<1){/*x<1*/ y=x; printf("x=%3d,y=x=%d\n",x,y);

}elseif(____x<10_______){/*1≤x-10*/ _____y=2*x-1_______; printf("x=%3d,y=2*x-1=%d\n",x,y); }else{/*x≥10*/ y=3*x-11; printf("x=%3d,y=3*x-11=%d\n",x#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d",y); }#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d\n",y); }#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d",y); }scanf("%d",&x);

C语言实用程序设计100例流程图

C语言实用程序100例 第一篇基础与提高 实例1利用库函数编写基本显示程序 实例2变量属性 实例3运算符与类型 实例4关于程序结构 实例5显示函数曲线图 实例6二分法选代的应用 实例7多变的立方体 实例8一维整型数组应用(1) 实例9一维整型数组应用(2) 实例10一维整型数组应用(3) 实例11一维整型数组应用(4) 实例12二维数组应用(1)——显示杨辉三角实例13二维数组应用(2)——魔方阵 实例14字符数组应用(1)——逻辑判断 实例15字符数组应用(2)——数据模拟 实例16二维数组应用——字符比较 实例17利用指针进行数据处理 实例18指针与字符串 实例19利用指针处理二维数组 实例20一级指针 实例21利用指针传递参数值 实例22结构体的应用 实例23链表的应用(1)

实例24链表的应用(2) 实例25链表的应用(3) 实例26共用体的应用 实例27枚举类型应用 实例28位运算 买例29义件加密 实例30文件的按记录随机读写 第二篇图形与多媒体 实例31改变文字背景色 实例32及本颜色设置 实例33制作表格 实例34制作多样的椭圆 实例35美丽的透视图形 实例36错位窗口 实例37能移动的矩形 实例38多变的填充矩形 实例39黄黑相间的矩形与圆 实例40六叶图案 实例41特殊图案 实例42国际象棋棋盘 实例43制作楼梯 实例44使用线类型函数设置多个汉字实例45彩色群点 实例46饼图 买例47产品折线图 实例48直方图 实例49变大变色的拒形与国

实例50多变的填充多边形 实例51流星球 实例52小球动态碰撞 买倒53多,曲线 实例54多变的圆与环 实例55优美的球体 实例56运动的小车 实例57统计动画消失次数 实例58运行的时钟 实例59直升飞机 实例60演绎“生命游戏” 实例61猜猜看 买例62艺术清屏 买倒63制作火焰 实例64动态绘制256条不同颜色的直线实例65红绿蓝三原色渐变 第三篇综合小程序 实例66两个矩阵相乘 实例67艺术钟 实例68家庭财务管理小程序 实例69用系统时间实现随机数 实例70闪动的多彩圆 实例71检查系统有无鼠标 实例72圆形光盘与矩形 实例73动态渐变图案 实例74往返两地间的小车 实例75飘扬的红旗

中国象棋算法

解剖大象的眼睛——中国象棋程序设计探索 黄晨*2005年6月 ( * 联系地址:复旦大学化学系表面化学实验室,eMail:morning_yellow@elephantbas https://www.wendangku.net/doc/903024574.html,) (一) 引言 我在今年2月写出了象棋程序ElephantEye的第一个版本(0.90),本来它只是象棋界面ElephantBoard的调试引擎。在设计程序的过程中,我尝试性地加入了很多算法,发现每次改进都能让程序的棋力有大幅度的提高,因此便对象棋程序的算法产生了浓厚的兴趣。到现在我已经陆续对ElephantEye作了几十次加工(目前版本为0.94),使得它的棋力接近了中等商业软件的水平,在公开源代码的象棋程序中,ElephantEye是最强的一个。 我希望能通过公开源代码的方式,推动中国象棋程序水平的整体发展,然而根据很 多网友的反馈意见,发现源代码中的很多部分并不是那么容易理解的。因此我才打算以《中国象棋程序设计探索》为题,写几篇详细介绍ElephantEye算法的连载,希望能让的源代码充分发挥它的作用。 下面我先简要谈一下我自己对ElephantEye的体会。 1.1 ElephantEye用到了哪些算法? 在我写本次连载以前,我已经完成了《象棋百科全书》网站上《对弈程序基本技术 》专题中所有文章的翻译,ElephantEye的大部分算法都参考了这些文章,这些算法我会在连载中一笔带过,详细的内容希望读者参考这些译文,那里还有我加的很多译注,希 望它们能够加深读者对这些算法的体会。 当然,仅根据这些文章所提供的算法,是写不出很好的程序的,我参考了王小春的《PC游戏编程——人机博弈》一书,也参考了一些国际象棋的源程序,并通过自己的探索,在ElephantEye中加入了另外的非常重要的算法,尤其是启发算法,我认为它们在程序中发挥了关键性的作用,而且很多细节在绝大多数文字资料中没有详细给出,我会在 我的连载中重点介绍。 我猜读者最感兴趣的内容是ElephantEye的着法生成器,这应该算是象棋程序的核心部分,同时也是各个程序差异最大的部分。在写ElephantEye以前,我在《象棋百科全书》网站上刊登了大量介绍“位棋盘”的文章,这是个非常有吸引力的思想,但是我试验 下来觉得它的速度并不快,在ElephantEye的程序里我只把位棋盘运用在将军判断上。尽管如此,ElephantEye短短10行的将军判断也许是程序的一个亮点吧,那么这部分内容我将尽量介绍得详细一点。 此外,一些看似和棋力关系不大的技术,诸如开局库、长将检测、后台思考、时间 策略、引擎协议等等,其实也直接影响着象棋程序的稳定性,因此也有必要逐一讲解。 总之,每个技术都很重要,我的连载虽然不能面面俱到,但我会尽我所能来作详细 阐述的。 1.2 如何正确评价ElephantEye目前的棋力?

C语言程序设计教程第三版(李凤霞)习题答案

教材习题答案 第一章 习题 一、单项选择题 1. C 2. B 3. B 4. C 5. D 6. A 7. C 8. A 二、填空题 1. 判断条件 2. 面向过程编程 3. 结构化 4. 程序 5. 面向对象的程序设计语言 6. 基本功能操作、控制结构 7. 有穷性 8. 直到型循环结构 9. 算法 10.可读性 11.模块化 12.对问题的分解和模块的划分

习题 一、单项选择题 1. B 2. D 3. C 4. B 5. A 6. A 7. B 8.C 二、填空题 1. 主 2. C编译系统 3. 函数、函数 4. 输入输出 5. 头 6. .OBJ 7. 库函数 8. 文本 第三章 习题 一、单项选择题 1. D 2. B 3. A

5. C 6. D 7. D 8. B 9. B 10.C 11.A 12.D 13.C 14.C 15.C 16.A 17.C 18.C 19.C 20.D 21.A 22.D 23.D 24.D,A 25.D 26.A 27.B 二、填空题 1. 补码 2. 308 10 - ±

~)308 10 ,15 —6 2. 308 10 - ± (~)308 10 ,15

6 3. 逻辑 4. 单目,自右向左 5. 函数调用 6. a 或 b ( 题目有错 , 小括号后面的 c<=98 改成( c>=97&&c<=98 )就可以得到所给的答案了) 7.

8. 65 , 89 第四章 习题 一、单项选择题 1. D 2. C 3. D 4. A 5. D 6. B 7. A 8. C 9. B 10.B 二、填空题 1. 一

C语言程序设计课程设计报告

《C语言程序设计》课程设计报告 (2013— 2014学年第 3 学期) 题目:C语言课程设计 专业:软件工程 班级:软件工程技术2班 姓名学号: 1 林燕萍 指导教师:吴芸 成绩: 计算机科学与技术系 2014 年6月23日

目录 一、课程设计的目的与要求 (1) 二、方案实现与调试 (3) 掷骰子游戏 (5) 射击游戏 (7) 计算存款本息之和 (8) 肇事逃逸 (10) 礼炮 (12) 汽车加油 (14) 大优惠 (16) 金币 (19) 三、课程设计分析与总结 (23) 附录程序清单 (25) 一、课程设计的目的与要求(含设计指标) C语言是一种编程灵活,特色鲜明的程序设计语言。C语言除了基知识,如概念,方法和语法规则之外更重要的是进行实训,以提高学习者的动手和编程能力,从应试课程转变为实践工具。 这是学习语言的最终目的。结合多年来的教学经验,根据学生的学习情况,为配合教学过程,使“项目教学法”能在本质上促使学生有更大进步,特编写了该《C语言程序设计任务书》,以在实训过程中给学生提供帮助。达到如下目的: 1.在课程结束之前,让学生进一步了解C程序设计语言的编程功能; 2.让学生扎实掌握C程序设计语言的相关知识; 3.通过一些有实际意义的程序设计,使学生体会到学以致用,并能将程序设计的知识与专业知识有效地结合,更全面系统地了解行业知识。 编写程序要求遵循如下基本要求: ①模块化程序设计 ②锯齿型书写格式

③必须上机调试通过 二、方案实现与调试 掷骰子游戏 2.1.1 题目内容的描述 1) 两人轮流掷骰子,每次掷两个,每人最多掷10次。 2) 将每人每次的分值累加计分 3) 当两个骰子点数都为6时,计8分;当两个点数相等且不为两个6时,计7分;当两个点数不一样时,计其中点数较小的骰子的点数。 4) 结束条件:当双方都掷10次或经过5次后一方累计分数多出另一方的30%及以上。最后显示双方分数并判定优胜者。 2.1.2输入数据类型、格式和内容限制和输出数据的说明 数据类型:整型;内容限制:随机数的产生;输入数据结果:胜利的一方 2.1.3主要模块的算法描述 本算法的思路过程:首先要随机产生随机数,然后进行算法输出数值,执行条件判断输入结果,最后比较结果,判断胜利的一方。 程序流程图 图1 掷骰子游戏 调试过程及实验结果

象棋游戏的设计与实现

象棋游戏的设计与实现

目录 1引言 (1) 1.1象棋设计背景和研究意义 (1) 1.2象棋设计研究方法 (1) 2人工智能算法设计 (2) 2.1棋局表示 (3) 2.2着法生成 (4) 2.3搜索算法 (5) 2.4历史启发及着法排序 (9) 2.5局面评估 (9) 2.6程序组装 (11) 3界面及程序辅助设计 (12) 3.1界面基本框架 (12) 3.2多线程 (13) 3.3着法名称显示 (14) 3.4悔棋和还原 (15) 4系统实现 (16) 结论 (19) 参考文献 (20)

1引言 1.1 象棋设计背景和研究意义 电脑游戏行业经过二十年的发展,已经成为与影视、音乐等并驾齐驱的全球最重要的娱乐产业之一,其年销售额超过好莱坞的全年收入。游戏,作为一种娱乐活动。早期的人类社会由于生产力及科技的制约,只能进行一些户外的游戏。随着生产力的发展和科技进步,一种新的游戏方式——电子游戏也随之诞生。 当计算机发明以后,电子游戏又多了一个新的载体。电子游戏在整个计算机产业的带动下不断地创新、发展着。自从计算机发明,向各个领域发展,到成为我们现在每天工作和生活必不可少的一部分的这个过程中,电子游戏也逐步渗入我们每个人的娱乐活动中。而计算机已经普及的今天,对于可以用计算机进行程序编辑的人来说,开发属于自己的游戏,已经不再是梦想。事实上,个人计算机软件市场的大约80%销售份额是来自游戏软件。棋牌游戏属于休闲类游戏,相对于角色扮演类游戏和即时战略类游戏等其它游戏,具有上手快、游戏时间短的特点,更利于用户进行放松休闲,为人们所喜爱,特别是棋类游戏,方便、快捷、操作简单,在休闲娱乐中占主要位置。作为中华民族悠久文化的代表之一,中国象棋不仅源远流长,而且基础广泛,作为一项智力运动,中国象棋开始走向世界。 随着计算机处理速度的飞速提高,人们很早就提出了疑问:计算机是否会超越人类?世界国际象棋大师已被计算机打败,计算机已经超过了人类?而人工智能是综合性很强的一门边缘学科,它的中心任务是研究如何使计算机去做那些过去只能靠人的智力才能做的工作。因此,对游戏开发过程中的人工智能技术的研究自然也就成了业界的一个热门研究方向。 1.2 象棋设计研究方法 对于象棋来说,核心设计主要包括人工智能算法的以及整个游戏中界面及程序辅助部分的实现,主要用 Visual C++ 进行开发,里面的MFC类库,使游戏开发更加方便,并利用人工智能相关搜索算法实现人工智能的着法生成,从而完善整个游戏的功能。 本文的目标是实现一款有着一定下棋水平且交互友好的中国象棋人机对弈程序。 该程序功能包括: *人机对弈; *搜索深度设定; (电脑棋力选择)

C语言程序设计第三版谭浩强课后习题答案完整版

C语言程序设计第三版谭浩强 课后习题答案完整版 第一章 1.5请参照本章例题,编写一个C程序,输出以下信息:************************** V ery Good! ************************** 解: mian() {printf(“**************************”); printf(“\n”); printf(“V ery Good!\n”); printf(“\n”); printf(“**************************”); } 1.6 编写一个程序,输入a、b、c三个值,输出其中最大值。解: mian() {int a,b,c,max; printf(“请输入三个数a,b,c:\n”); scanf(“%d,%d,%d”,&a,&b,&c); max=a; if(max main() { char c1=?C?,c2=?h?,c3=?i?,c4=?n?,c5=?a?; c1+=4; c2+=4; c3+=4; c4+=4; c5+=4; printf("密码是%c%c%c%c%c\n",c1,c2,c3,c4,c5); } 运行结果: 密码是Glmre 3.9求下面算术表达式的值。 (1)x+a%3*(int)(x+y)%2/4 设x=2.5,a=7,y=4.7 (2)(float)(a+b)/2+(int)x%(int)y 设a=2,b=3,x=3.5,y=2.5 (1)2.5 (2)3.5 3.10写出程序运行的结果。 main() {int i,j,m,n; i=8; j=10; m=++i; n=j++; printf(“%d,%d,%d,%d”,i,j,m,n); } 解: 9,11,9,10 3.12 写出下面表达式运算后a的值,设原来a=12。设a和n都已定义为整型变量。 (1)a+=a (2)a-=2 (3)a*=2+3 (4)a/=a+a (5)a%=(n%=2),n的值等于5 (6)a+=a-=a*=a 解: (1) 24 (2) 10 (3) 60 (4) 0 (5) 0 (6) 0 第四章 4.4若a=3,b=4,c=5,x=1.2,y=2.4,z=-3.6,u=51274,n=128765,c1=’a’,c2=’b’。想得到以下输出格式和结果,请写出程序(包括定义变量类型和设计输出)。 a=_3_ _b=_4_ _c=_5 x=1.200000,y=2.400000,z=-3.600000 x+y=_3.600_ _y+z=-1.20_ _z+x=-2.40 c1=ˊaˊ_or_97(ASCII)

c语言程序设计流程图详解

c语言程序设计流程图详解 介绍常见的流程图符号及流程图的例子。 本章例1-1的算法的流程图如图1-2所示。本章例1-2的算法的流程图如图1-3所示。 在流程图中,判断框左边的流程线表示判断条件为真时的流程,右边的流程线表示条件为假时的流程,有时就在其左、右流程线的上方分别标注“真”、“假”或“T、”“F或”“Y、”“N”注“真”、“假”或“T、”“F或”“Y、”“N”

另外还规定,流程线是从下往上或从右向左时,必须带箭头,除此以外,都不画箭头,流程线的走向总是从上向下或从左向右。 2.算法的结构化描述 早期的非结构化语言中都有goto语句,它允许程序从一个地方直接跳转到另一个地方去。 执行这样做的好处是程序设计十分方便灵活,减少了人工复杂度,但其缺点也是十分突出的,一大堆跳转语句使得程序的流程十分复杂紊乱,难以看懂也难以验证程序的正确性,如果有错,排起错来更是十分困难。这种转来转去的流程图所表达的混乱与复杂,正是软件危机中程序人员处境的一个生动写照。而结构化程序设计,就是要把这团乱麻理清。 经过研究,人们发现,任何复杂的算法,都可以由顺序结构、选择(分支)结构和循环结构这三种基本结构组成,因此,我们构造一个算法的时候,也仅以这三种基本结构作为“建筑 单元”,遵守三种基本结构的规范,基本结构之间可以并列、可以相互包含,但不允许交叉,不允许从一个结构直接转到另一个结构的内部去。正因为整个算法都是由三种基本结构组成的,就像用模块构建的一样,所以结构清晰,易于正确性验证,易于纠错,这种方法,就是结构化方法。遵循这种方法的程序设计,就是结构化程序设计。 相应地,只要规定好三种基本结构的流程图的画法,就可以画出任何算法的流程图。 (1)顺序结构 顺序结构是简单的线性结构,各框按顺序执行。其流程图的基本形态如图1-4所示,语句 的执行顺序为:A→B→C。 (2)选择(分支)结构 这种结构是对某个给定条件进行判断,条件为真或假时分别执行不同的框的内容。其基本形状有两种,如图1-5a)、b)所示。图1-5a)的执行序列为:当条件为真时执行A,否则执 行B;图1-5b)的执行序列为:当条件为真时执行A,否则什么也不做。 (3)循环结构 循环结构有两种基本形态:while型循环和do-while型循环。 a.while型循环 如图1-6所示。 其执行序列为:当条件为真时,反复执行A,一旦条件为假,跳出循环,执行循环紧后的语句。 b.do-while型循环 如图1-7所示。

中国象棋源代码及文档

摘要 象棋程序可以分为两大部分:人工智能和界面程序辅助。人工智能的主要部分,反 映了计算机下象棋的想法,电脑怎么想,最好的方法去完成下一步,优先搜索算法进行 搜索,和各种可能的行动,评估,选择胜利面最大的一步;界面和程序协助部分主要是界 面友好,以更好地适应用户下象棋的想法。 本文研究了中国象棋在电脑中如何表示,然后讨论如何产生走法的一系列相关技术。使用MFC架构和Visual C + +开发工具,实现一定技能的中国象棋人机对弈功能。 关键词:中国象棋;人工智能;下棋

Title The Design And Realize of human-computer Chess Game Abstract Chess program can be divided into two major auxiliary artificial intelligence and interface program. The AI part of the main reflected computer chess ideas, computer how to think and go to the best method to complete the next step, first search algorithm to search, and a variety of possible moves, valuations, choose victory surface step; the interface and the program assisted some of the major user-friendly game of chess by the previous step, to better adjust the chess ideas. This paper studies the Chinese chess computer, and then discuss how to generate a series of related moves. MFC architecture and Visual C development tools, to achieve a certain chess skills, Chinese chess, human-computer chess program. Keywords: Chess; artificial intelligence; chess

c语言程序设计(第3版)的习题答案

1.5请参照本章例题,编写一个C程序,输出以下信息: ************ Very Goodj! ************ 解: main() { printf(" ************ \n"); printf("\n"); printf(" Very Good! \n"); printf("\n"); printf(" ************\n"); } 1.6编写一个程序,输入a b c三个值,输出其中最大者。 解:main() {int a,b,c,max; printf("请输入三个数a,b,c:\n"); scanf("%d,%d,%d",&a,&b,&c); max=a; if(max

java中国象棋报告

贵州航天职业技术学院Java课程设计报告 专业:计算机软件技术 班级:09软件二 学号:A093GZ053020152 姓名:韦治成 指导老师:肖宏启 时间:

目录 摘要 ------------------------------------------------------------------- 3【摘要】 ------------------------------------------------------------ 3【关键字】 --------------------------------------------------------- 4系统概述 ---------------------------------------------------------------- 4 1.棋盘表示 ---------------------------------------------------------- 4 3.人人对弈 ---------------------------------------------------------- 4系统分析 ---------------------------------------------------------------- 4 1. 设计内容--------------------------------------------------------- 4 2. 设计要求--------------------------------------------------------- 5 3.中国象棋软件-------------------------------------------------- 6 4.运行效果-------------------------------------------------------- 8系统设计 ---------------------------------------------------------------- 8 1.总体设计 ---------------------------------------------------------- 8 运行界面: ------------------------------------------------------- 10 2.运行输出结果 -------------------------------------------------- 10 3.总结与说明 ----------------------------------------------------- 11 4.象棋界面实现: ----------------------------------------------- 11 5.对弈功能的实现: -------------------------------------------- 15 参考文献 -------------------------------------------------------------- 16

Java扫雷游戏源代码

import java.awt.BorderLayout; import java.awt.Container; import java.awt.Font; import java.awt.GridLayout; import java.awt.Insets; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JPanel; import javax.swing.Timer; public class ScanLei1 extends JFrame implements ActionListener{ private static final long serialVersionUID = 1L; private Container contentPane; private JButton btn; private JButton[] btns; private JLabel b1; private JLabel b2; private JLabel b3; private Timer timer; private int row=9; private int col=9; private int bon=10; private int[][] a; private int b; private int[] a1; private JPanel p,p1,p2,p3; public ScanLei1(String title){ super(title); contentPane=getContentPane(); setSize(297,377); this.setBounds(400, 100, 400, 500); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); timer =new Timer(1000,(ActionListener) this); a = new int[row+2][col+2];

相关文档