下载

0下载券

加入VIP
  • 专属下载特权
  • 现金文档折扣购买
  • VIP免费专区
  • 千万文档免费下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 黑白棋c语言程序(Othello C language program)

黑白棋c语言程序(Othello C language program).doc

黑白棋c语言程序(Othello C language pro…

谢强志
2018-09-12 0人阅读 举报 0 0 0 暂无简介

简介:本文档为《黑白棋c语言程序(Othello C language program)doc》,可适用于社会民生领域

黑白棋c语言程序(OthelloClanguageprogram)黑白棋c语言程序(OthelloClanguageprogram)#include"graphicsh图形系统头文件"**#defineleftxb光标左键值**#definerightxd光标右键值**#definedownx光标下键值**#definetheipx光标上键值**#defineescxbesc键值**#defineenterxcd回车键值**inta={},key,score,score具体分数以及按键与存放棋子的变量**charplayone,playtwo*两个人的得分转换成字符串输出*playtoplayvoid(void)*人人对战函数*drawqpvoid(void)*画棋盘函数*voidsetplaycolor(intx)*设置棋子第一次的颜色*voidmovecolor(intx,inty)*恢复原来棋盘状态*intqpchange(intx,inty,intz)*判断棋盘的变化*doscorevoid(void)*处理分数*voidprintscore(intn)*输出成绩*playwinvoid(void)*输出胜利者信息*******主函数*********voidmain(void){intdg=detect,grinitgraph(dg,gr,"c:^tc")*初始化图形系统*drawqp()*画棋盘*playtoplay()*人人对战*getch()closegraph()*关闭图形系统*}voiddrawqp()*画棋盘*{inti,jscore=score=*棋手一开始得分都为*setbkcolor(blue)for(i=in<==){line(,in,in画水平线)**line(in,)*画垂直线*}setcolor()*取消圆周围的一圈东西*setfillstyle(solidfill,)*白色实体填充模式*fillellipse(,,)*在显示得分的位置画棋*setfillstyle(solidfill,)*黑色实体填充模式*fillellipse(,,)a=a=*初始两个黑棋*a=a=*初始两个白棋*setfillstyle(solidfill,white)fillellipse(*a*,,)fillellipse(*a*,,)setfillstyle(solidfill,)fillellipse(*a*,,)fillellipse(*a*,,)score=score=*有棋后改变分数*doscore()*输出开始分数*}voidplaytoplay()*人人对战*{intx,y,t=,i,j,cc=while()*换棋手走棋*{x=,y=*每次棋子一开始出来的坐标,x为行坐标,y为列坐标*while()*具体一个棋手走棋的过程*{printscore()*输出棋手的成绩*printscore()*输出棋手的成绩*setplaycolor(t)*t变量是用来判断棋手所执棋子的颜色*fillellipse(x,y,)key=bioskey()*接收按键*if(key==esc)*跳出游戏*breakelseif(key==enter如果按键确定就可以跳出循环)**{if(y!=a(x)(y)=a(x)(y)=)*如果落子位置没有棋子*{if(t==)*如果是棋手移动*a(x)(y)=Else*or*mobileplayerA(x)(y)=If(!QpChange(x,y,t))*afterjudgmentchanges*chessboardLazi{A(x)(y)=**restorestatespaceCc**thenumberofstatisticsbegantotryIf(cc>=scorescore)*ifyoutrytoexceedthenumberofspaceswillstop{MoveColor(x,y)Fillellipse(x,y,,)Break}ElseContinue**ifthekeyisinvalid}(DoScore)**doscoreBreak*boardchanges,thengoroundeachother}Else*hasapieceiskeytoContinue}Elsefour**determinethedirectionkeyIf(key==LEFTx>)**leftarrow{MoveColor(x,y)Fillellipse(x,y,,)SetPlayColor(t)X=Fillellipse(x,y,,)}ElseIf(key==RIGHTx<y>)**rightarrow{MoveColor(x,y)Fillellipse(x,y,,)SetPlayColor(t)X=Fillellipse(x,y,,)}ElseIf(key==UPy>)**onthedirectionkey{MoveColor(x,y)Fillellipse(x,y,,)SetPlayColor(t)Y=Fillellipse(x,y,,)}ElseIf(key==DOWNy<)**underthedirectionkey{MoveColor(x,y)Fillellipse(x,y,,)SetPlayColor(t)Y=Fillellipse(x,y,,)}}If(key==ESC)**theendofthegameBreakIf((scorescore)==||score==||score==)*latticehasbeenfilledwithoneorpiecestojudgetheoutcome{(playWin)**outputendresultBreak}T=t*partyleft,changethecolorofeachothergoroundpiecesCc=*countrecoveryfor*}*endwhile*}VoidSetPlayColor(intt)**colorsetpieces{If(t==)Setfillstyle(SOLIDFILL,)**whiteElseSetfillstyle(SOLIDFILL,)**gray}VoidMoveColor(intx,inty)theoriginalstategridrecovery**takeastepback{If(y<)*ifitisfromastartingpointontherestorationoftheblueSetfillstyle(SOLIDFILL,BLUE)Else*othercircumstancesifitisontherestorationofawhitepawn,blackorbluebackpiece,recoveryboard*Switch(a(x)(y)){Case:Setfillstyle(SOLIDFILL,)break**whiteCase:Setfillstyle(SOLIDFILL,)break**BlackDefault:Setfillstyle(SOLIDFILL,BLUE)**blue}}IntQpChange(intx,inty,intt)**boardofthechangeofjudgment{Int,I,J,K,KK,II,JJ,yesYes=I=(x)**subscriptarrayelementsforcalculationJ=(y)**columnsubscriptarrayelementcalculationSetPlayColor(T)**colorchangesetpieces*begantodeterminethedirectionofchangeIf(j<)**totheright{For(k=jjj*,,)}if(ii=)yes=}}返回是否改变过棋子颜色的标记returnyes**}voiddoscore处理分数()**{inti,jscore=score=*重新开始计分数*for(i=i<i)for(j=,j<j)if(aij==)*分别统计两个人的分数*scoreelseif(aij==)score}voidprintscore(intplaynum输出成绩)**{if(playnum==)*清除以前的成绩*{setfillstyle(solidfill,blue)bar()}setcolor(red)settextstyle(,,设置文本输出样式)**if(playnum==)*判断输出哪个棋手的分,在不同的位置输出*{sprintf(playone,"d",score)outtextxy(,playone)}else{sprintf(playtwo,"d",score)outtextxy(,playtwo)}setcolor()}voidplaywin输出最后的胜利者结果()**{settextstyle(,,)setcolor()if(score>score开始判断最后的结果)**outtextxy(,,"blackwin!")elseif(score<score)outtextxy(,,whitewin!")elseouttextxy(,,"youallwin!")}五子棋游戏*五子棋*#includesstdioh><#includesstdlibh><#includesgraphicsh><#includesbiosh><#includesconioh><#defineleftxb#definerightxd#definedownx#defineupx#defineescxb#definespacex#definestable#definejz#definejs#definenintboxnnintstepstepx,yintkeyintflag=voiddraw()boxvoiddrawcicle(intx,inty,intcolor)voidchange()voidjudgewho(intx,inty)voidjudgekey()intjudgeresult(intx,inty)voidattentoin()voidattention(){charchwindow(,,,)textbackground(lightblue)textcolor(yellow)clrscr()gotoxy()printf("游戏操作规则:")gotoxy()printf("playrules")gotoxy()printf("、按左右上下方向键移动棋子")gotoxy()printf("pressleft,right,up,downkeytomovethepiece")gotoxy()printf("、按空格确定落棋子")gotoxy(,)printf("pressspacetoplacethepiece")gotoxy(,)printf("、禁止在棋盘外按空格")gotoxy(,)printf("donotpressthespaceoutsideofthechessboard")gotoxy()printf("你是否接受上述的游戏规则(yn))gotoxy()printf("doyouaccepttheaboveplayingrulesyn:")while(){gotoxy(,)CH=getche()如果(CH==Y||CH==Y)打破如果(CH==n||CH==n){窗口(,,,)设置文本的背景颜色(黑色)文字颜色(浅灰色)clrscr()出口()}gotoxy(,)printf(“”)}}无效drawbox(){intXXYYsetbkcolor(浅蓝色)设置颜色(黄色)gotoxy(,)printf(“左右上下键移动空间放ESC退出。”)为(x==YY=X<=X)线((XJZ)*比莉(YJS)*比莉(XJZ)*比莉(YJS)*BILI)为(x=Y=X=Y<=Y)线((XJZ)*比莉(YJS)*比莉(xJZ)*比莉(YJS)*BILI)对于(X=X<=X)对于(Y=Y<=Y)盒=xy}无效drawcircle(xyint的颜色){设置颜色(颜色)setlinestyle(solidline,)X=(xJZ)*比莉Y=(YJS)*比莉圆(xy)}无效judgekey(){intiIntJ开关(键){例左右:如果(stepx,)打破其他的{对(我=stepxJ=stepy我>=我)如果(框i===){drawcircle(stepxstepy浅蓝色)打破}如果(i<)中断stepx=我法官(stepxstepy)打破}权案:如果(stepx>)打破其他的{对(我=stepxJ=stepy我<=i)如果(框i===){drawcircle(stepxstepy浅蓝色)打破}如果(i)突破stepx=我法官(stepxstepy)打破}的情况下:如果((stepy)>)打破其他的{对(我=stepxJ=stepyJ<=j)如果(框i===){drawcircle(stepxstepy浅蓝色)打破}如果(j=)断stepy=J法官(stepxstepy)打破}案子:如果((stepy),)打破其他的{对(我=stepxJ=stepyJ>=J)如果(框i===){drawcircle(stepxstepy浅蓝色)打破}如果(j,)断裂stepy=J法官(stepxstepy)打破}案例ESC:打破案例空间:如果(stepx>=和stepx<=和stepy>=和stepy<=){如果(盒stepxstepy==){盒stepxstepy=旗如果(judgeresult(stepxstepy)==){声音()延迟()nosound()gotoxy()如果(标志=){setbkcolor(蓝色)cleardevice()setviewport(,)定义一个图形窗口**设置填充模式(,)绿色以实填充**设置颜色(黄色)矩形(,)画线工具(,,)设置颜色为红色()设置文本格式(,,)*三重笔划字体水平放,倍*outtextxy(,“白赢~”)设置颜色为红色()设置文本格式(,,)*无衬笔划字体水平放大倍*outtextxy(“白赢~”)设置颜色为红色()设置文本格式(,,)getch()closegraph()出口()}如果(标志=){setbkcolor(蓝色)cleardevice()setviewport(,)定义一个图形窗口**设置填充模式(,)绿色以实填充**设置颜色(黄色)矩形(,)画线工具(,,)设置颜色为红色()设置文本格式(,,)*三重笔划字体水平放大倍*outtextxy(,“红赢~”)设置颜色为红色()设置文本格式(,,)*无衬笔划字体水平放大倍*outtextxy(“红赢~”)设置颜色为红色()设置文本格式(,,)getch()closegraph()出口()}}change()打破}}其他的打破}}无效change(){如果(标志=)标志,其他的标志,}无效的判断(xy){如果(标志=)drawcircle(xy)如果(标志=)drawcircle(xy)}国际judgeresult(xy){jkNn(){N,n,水平向左数**对于(j=xk=yj=j){如果(框„=标志)N其他的打破}水平向右数**对于(j=xk=yj,j){如果(框„=标志)n其他的打破}如果(Nn>=){返回()打破}垂直向上数**N,n,对于(j,xk,yk,k){如果(框„=标志)N其他的打破}垂直向下数**对于(j=xk=yk,K){如果(框„=标志)n其他的打破}如果(Nn>=){返回()打破}向左上方数**N,n,对于(=xk=yj=k=jk){如果(框„=标志)N其他的打破}向右下方数**对于(j=xk=yj,k,jk){如果(框„=标志)n其他的打破}如果(Nn>=){返回()打破}向右上方数**N,n,对于(j=xk=yj,k=jK){如果(框„=标志)N其他的打破}向左下方数**对于(=xk=yj=k,jk){如果(框„=标志)n其他的打破}如果(Nn>=){返回()打破}返回()打破}}无效main(){国际gdriver=VGAgmode=vgahiclrscr()attention()这句话的意思是(与gdriver与gmode“C:TC”)**setwritemode(xorput)标志,drawbox()做{stepx=stepy=*drawcircle(stepxstepy)*法官(stepxstepy)做{而(bioskey()==)()bioskey关键=judgekey()}当(键)~=空格键~=ESC键)}当(键)~=ESC键)closegraph()}

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

评分:

/27

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利