摇摆游戏攻略网

关闭导航
首页 > 棋牌益智 > 游戏攻略2

怎么把五子棋可视化

整理:yaobaiwang.com 时间:07月05日

[JAVA设计的五子棋源程序]java编写五子棋程序:import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.awt.geom.*; import java.util.*; class PaintPanel extends JPanel...+阅读

怎么把五子棋可视化

给你一个设计方案吧,我之前用这个开发五子棋的,工作量很大,我花了一个周末才完成(都是用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=64-score1-score2) /*如果尝试超过空格数则停步*/ { MoveColor(x,y); fillellipse(x,y,15,15); break; } else continue;/*如果按键无效*/ } DoScore();/*分数的改变*/ break;/*棋盘变化了,则轮对方走棋*/ } else/*已经有棋子就继续按键*/ continue; } else /*四个方向按键的判断*/ if(key==LEFT&x>120)/*左方向键*/ { MoveColor(x,y); fillellipse(x,y,15,15); SetPlayColor(t); x-=40; fillellipse(x,y,15,15); } else if(key==RIGHT&x80)/*右方向键*/ { MoveColor(x,y); fillellipse(x,y,15,15); SetPlayColor(t); x+=40; fillellipse(x,y,15,15); } else if(key==UP&y>120)/*上方向键*/ { MoveColor(x,y); fillellipse(x,y,15,15); SetPlayColor(t); y-=40; fillellipse(x,y,15,15); } else if(key==DOWN&y

在pascal做五子棋

1.不懂你的问题2.五子棋没有,井字过三关就有一个:双人的 const st:array['1'..'2']of string=('Player1 win!!!', 'Player2 win!!!'); var map:array[1..3,1..3]of char; x,y:longint; procedure print; var i,j:longint; begin for i:=1 to 100 do writeln; for i:=1 to 3 do begin for j:=1 to 3 do write(map[i,j]); writeln; end; end; procedure check; begin if (map[1,1]=map[1,2])and(map[1,1]=map[1,3])and(map[1,1]'*') then begin print;writeln(st[map[1,1]]);readln;halt;end; if (map[2,1]=map[2,2])and(map[2,1]=map[2,3])and(map[2,1]'*') then begin print;writeln(st[map[2,1]]);readln;halt;end; if (map[3,1]=map[3,2])and(map[3,1]=map[3,3])and(map[3,1]'*') then begin print;writeln(st[map[3,1]]);readln;halt;end; if (map[1,1]=map[2,1])and(map[1,1]=map[3,1])and(map[1,1]'*') then begin print;writeln(st[map[1,1]]);readln;halt;end; if (map[1,2]=map[2,2])and(map[1,2]=map[3,2])and(map[1,2]'*') then begin print;writeln(st[map[1,2]]);readln;halt;end; if (map[1,3]=map[2,3])and(map[1,3]=map[3,3])and(map[1,3]'*') then begin print;writeln(st[map[1,3]]);readln;halt;end; if (map[1,1]=map[2,2])and(map[1,1]=map[3,3])and(map[1,1]'*') then begin print;writeln(st[map[1,1]]);readln;halt;end; if (map[3,1]=map[2,2])and(map[3,1]=map[1,3])and(map[3,1]'*') then begin print;writeln(st[map[3,1]]);readln;halt;end; end; begin writeln('####jing zi guo san guan####'); readln; fillchar(map,sizeof(map),'*'); repeat repeat print; write('Player1:'); readln(x,y); if map[x,y]'*' then begin writeln('You can not put it there!Put again!');readln;end; until map[x,y]='*'; map[x,y]:='1'; check; repeat print; write('Player2:'); readln(x,y); if map[x,y]'*' then begin writeln('You can not put it there!Put again!');readln;end; until map[x,y]='*'; map[x,y]:='2'; check; until 1=2; end. 说明:输入你要下的坐标.如1 1表示在左上角下一个棋子

C怎么运用面向对象的思想制作五子棋

面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。

例如五子棋,面向过程的设计思路就是首先分析问题的步骤:1、开始游戏,2、黑子先走,3、绘制画面,4、判断输赢,5、轮到白子,6、绘制画面,7、判断输赢,8、返回步骤2,9、输出最后结果。把上面每个步骤用分别的函数来实现,问题就解决了。

而面向对象的设计则是从另外的思路来解决问题。整个五子棋可以分为 1、黑白双方,这两方的行为是一模一样的,2、棋盘系统,负责绘制画面,3、规则系统,负责判定诸如犯规、输赢等。第一类对象(玩家对象)负责接受用户输入,并告知第二类对象(棋盘对象)棋子布局的变化,棋盘对象接收到了棋子的i变化就要负责在屏幕上面显示出这种变化,同时利用第三类对象(规则系统)来对棋局进行判定。

可以明显地看出,面向对象是以功能来划分问题,而不是步骤。同样是绘制棋局,这样的行为在面向过程的设计中分散在了总多步骤中,很可能出现不同的绘制版本,因为通常设计人员会考虑到实际情况进行各种各样的简化。而面向对象的设计中,绘图只可能在棋盘对象中出现,从而保证了绘图的统一。

功能上的统一保证了面向对象设计的可扩展性。比如我要加入悔棋的功能,如果要改动面向过程的设计,那么从输入到判断到显示这一连串的步骤都要改动,甚至步骤之间的循序都要进行大规模调整。如果是面向对象的话,只用改动棋盘对象就行了,棋盘系统保存了黑白双方的棋谱,简单回溯就可以了,而显示和规则判断则不用顾及,同时整个对对象功能的调用顺序都没有变化,改动只是局部的。

再比如我要把这个五子棋游戏改为围棋游戏,如果你是面向过程设计,那么五子棋的规则就分布在了你的程序的每一个角落,要改动还不如重写。但是如果你当初就是面向对象的设计,那么你只用改动规则对象就可以了,五子棋和围棋的区别不就是规则吗?(当然棋盘大小好像也不一样,但是你会觉得这是一个难题吗?直接在棋盘对象中进行一番小改动就可以了。)而下棋的大致步骤从面向对象的角度来看没有任何变化。

当然,要达到改动只是局部的需要设计的人有足够的经验,使用对象不能保证你的程序就是面向对象,初学者或者很蹩脚的程序员很可能以面向对象之虚而行面向过程之实,这样设计出来的所谓面向对象的程序很难有良好的可移植性和可扩展性。

java源程序五子棋

你好!这里有段五子棋程序的代码,希望对你有帮助!//wuziqi.java import java.applet.*; import java.awt.*; import java.awt.event.*; import java.applet.Applet; import java.awt.Color; public class wuziqi extends Applet implements ActionListener,MouseListener,MouseMotionListener,ItemListener { int color_Qizi=0;//旗子的颜色标识 0:白子 1:黑子 int intGame_Start=0;//游戏开始标志 0未开始 1游戏中 int intGame_Body[][]=new int[16][16]; //设置棋盘棋子状态 0 无子 1 白子 2 黑子 Button b1=new Button("游戏开始"); Button b2=new Button("重置游戏"); Label lblWin=new Label(" "); Checkbox ckbHB[]=new Checkbox[2]; CheckboxGroup ckgHB=new CheckboxGroup(); public void init() { setLayout(null); addMouseListener(this); add(b1); b1.setBounds(330,50,80,30); b1.addActionListener(this); add(b2); b2.setBounds(330,90,80,30); b2.addActionListener(this); ckbHB[0]=new Checkbox("白子先",ckgHB,false); ckbHB[0].setBounds(320,20,60,30); ckbHB[1]=new Checkbox("黑子先",ckgHB,false); ckbHB[1].setBounds(380,20,60,30); add(ckbHB[0]); add(ckbHB[1]); ckbHB[0].addItemListener(this); ckbHB[1].addItemListener(this); add(lblWin); lblWin.setBounds(330,130,80,30); Game_start_csh(); } public void itemStateChanged(ItemEvent e) { if (ckbHB[0].getState()) //选择黑子先还是白子先 { color_Qizi=0; } else { color_Qizi=1; } } public void actionPerformed(ActionEvent e) { Graphics g=getGraphics(); if (e.getSource()==b1) { Game_start(); } else { Game_re(); } } public void mousePressed(MouseEvent e){} public void mouseClicked(MouseEvent e) { Graphics g=getGraphics(); int x1,y1; x1=e.getX(); y1=e.getY(); if (e.getX()300 || e.getY()300) { return; } if (x1%20>10) { x1+=20; } if(y1%20>10) { y1+=20; } x1=x1/20*20; y1=y1/20*20; set_Qizi(x1,y1); } public void mouseEntered(MouseEvent e){} public void mouseExited(MouseEvent e){} public void mouseReleased(MouseEvent e){} public void mouseDragged(MouseEvent e){} public void mouseMoved(MouseEvent e){} public void paint(Graphics g) { draw_qipan(g); } public void set_Qizi(int x,int y) //落子 { if (intGame_Start==0) //判断游戏未开始 { return; } if (intGame_Body[x/20][y/20]!=0) { return; } Graphics g=getGraphics(); if (color_Qizi==1)//判断黑子还是白子 { g.setColor(Color.black); color_Qizi=0; } else { g.setColor(Color.white); color_Qizi=1; } g.fillOval(x-10,y-10,20,20); intGame_Body[x/20][y/20]=color_Qizi+1; if (Game_win_1(x/20,y/20)) //判断输赢 { lblWin.setText(Get_qizi_color(color_Qizi)+"赢了!"); intGame_Start=0; } if (Game_win_2(x/20,y/20)) //判断输赢 { lblWin.setText(Get_qizi_color(color_Qizi)+"赢了!"); intGame_Start=0; } if (Game_win_3(x/20,y/20)) //判断输赢 { lblWin.setText(Get_qizi_color(color_Qizi)+"赢了!"); intGame_Start=0; } if (Game_win_4(x/20,y/20)) //判断输赢 { lblWin.setText(Get_qizi_color(color_Qizi)+"赢了!"); intGame_Start=0; } } public String Get_qizi_color(int x) { if (x==0) { return "黑子"; } else { return "白子"; } } public void draw_qipan(Graphics G) //画棋盘 15*15 { G.setColor(Color.lightGray); G.fill3DRect(10,10,300,300,true); G.setColor(Color.black); for(int i=1;i { G.drawLine(20,20*i,300,20*i); G.drawLine(20*i,20,20*i,300); } } public void Game_start() //游戏开始 { intGame_Start=1; Game_btn_enable(false); b2.setEnabled(true); } public void Game_start_csh() //游戏开始初始化 { br />intGame_Start=0; Game_btn_enable(true); b2.setEnabled(false); ckbHB[0].setState(true); for (int i=0;i { for (int j=0;j { intGame_Body[i][j]=0; } } lblWin.setText(""); } public void Game_re() //游戏重新开始 { repaint(); Game_start_csh(); } public void Game_btn_enable(boolean e) //设置组件状态 { b1.setEnabled(e); b2.setEnabled(e); ckbHB[0].setEnabled(e); ckbHB[1].setEnabled(e); } public boolean Game_win_1(int x,int y) //判断输赢 横 { int x1,y1,t=1; x1=x; y1=y; for (int i=1;i { if (x1>15) { break; } if (intGame_Body[x1+i][y1]==intGame_Body[x][y]) { t+=1; } else { break; } } for (int i=1;i { if (x1 { break; } if(intGame_Body[x1-i][y1]==intGame_Body[x][y]) { t+=1; } else { break; } } if (t>4) { return true; } else { return false; } } public boolean Game_win_2(int x,int y) //判断输赢 竖 { int x1,y1,t=1; x1=x; y1=y; for (int i=1;i { if (x1>15) { break; } if (intGame_Body[x1][y1+i]==intGame_Body[x][y]) { t+=1; } else { break; } } for (int i=1;i { if (x1 { break; } if(intGame_Body[x1][y1-i]==intGame_Body[x][y]) { t+=1; } else { break; } } if (t>4) { return true; } else { return false; } } public boolean Game_win_3(int x,int y) //判断输赢 左斜 { int x1,y1,t=1; x1=x;...

以下为关联内容:

谁能帮我写一个JAVA人人对战的五子棋java五子棋人机:package com.java.demo1; import javax.swing.* ; import java.awt.*; import java.awt.event.*;/** * 自定义五子棋棋盘面板类 * */ public class Gobang ext...

黑石五子棋软件最新版v3请问在五子棋软件blackstone中哪个level实力最强:黑石五子棋软件最新版,PC上的一个五子棋软件,可以快速开启一场五子棋策略竞技较量,你的对手是AI电脑,有多种难度可以选择,用来练...

助高手一个C语言五子棋的代码C语言简单的五子棋:/* 程序中用到的库函数所在头文件应用 #include 命令包含进来 */ #include#include#include#include#include/*****************************************...

JAVA五子棋java五子棋程序解释:你好!这里有段五子棋程序的代码,希望对你有帮助! //wuziqi.java import java.applet.*; import java.awt.*; import java.awt.event.*; import java.applet....

下课玩五子棋的作文关于下五子棋的作文:下课了,我和同学小明玩五子棋。第一局,我执黑,小明执白。我先把黑子放到了棋盘的最中间,小明把他的白子放到我黑子的上边。我挨着黑子左边又放了一个子,小明在...

请以对手写一篇记叙文下五子棋400一500字与爸爸一起下五子棋的400字的周记:不知道你认同不认同一句话,每一个下棋人都会遇到穷极一生想要战胜的人,或许你们互相下过,或许你们根本没遇见过,但是你就想战胜他,这就是下棋人...

勇芳qq五子棋伴侣v39勇芳qq五子棋伴侣是专为五子棋迷们制作的一款五子棋辅助工具,可以提示玩家关键子的位置,提供更深层次的分享,提高胜率使用说明本软件非常简单,只要开启QQ五子棋游戏后,点开始就可...

一篇下五子棋的作文少点的谁来给我以下五子棋的乐趣写一篇作文啊:哈——哈——哈,你败了吧!”听到这声音,也许你不知道是怎么回事,但我很明白。原来,我家的“五子棋高手”老爸在和妈妈较量呢,最后还是老爸胜...

五子棋JAVA怎么实现java编写五子棋程序:import java.io.*; public class Gobang{ //定义一个二维数组来充当棋盘 private String[][] board; //定义棋盘的大小 private static int BOARD_SIZE =...

推荐文章