三九宝宝网宝宝教育智力培养

求一个黑白棋java代码

02月25日 编辑 39baobao.com

[java拼图游戏思路源代码]// 设置文件类型 chooser.setFileFilter(filter); // 打开选择器面板 int returnVal = chooser.showOpenDialog(this); if (returnVal == JFileChooser.APPROVE_OPTION) { i...+阅读

package com.demo; import java.awt.Color; import java.awt.Graphics; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.util.ArrayList; import javax.swing.JFrame; import javax.swing.JOptionPane; import javax.swing.JPanel; /** * 黑白棋面板 * * author hyg * */ public class HbPanel extends JPanel { private static int BLACK = 1; private static int WHITE = -1; int[][] qizi = new int[8][8]; int curQizi = BLACK; // 当前走棋方 ArrayList a = new ArrayList(); ArrayList tmp = new ArrayList(); // 在指定位置画棋子 private void drawQizi(int i, int j) { Graphics g = this.getGraphics(); if (qizi[i][j] == BLACK) { g.setColor(Color.BLACK); } else if (qizi[i][j] == WHITE) { g.setColor(Color.WHITE); } g.fillOval(55 + 50 * i, 55 + 50 * j, 40, 40); } /** * Create the panel */ public HbPanel() { super(); addMouseListener(new MouseAdapter() { public void mouseClicked(final MouseEvent e) { int x = e.getX(); int y = e.getY(); System.out.println(x + ", " + y); // 计算索引 int i = (x - 50) / 50; int j = (y - 50) / 50; System.out.println(i + ", " + j); if (i= 8 || j= 8 || qizi[i][j] != 0) // 如果指定位置超出范围或已经有棋子,直接返回。

return; if (checkLocation(curQizi, i, j)) { // 判断当前位置是否可以放棋子 // 如果可以 // 1. 画出棋子 qizi[i][j] = curQizi; drawQizi(i, j); // 3. 判断对方是否有棋可走,如有 if (checkNext(-1 * curQizi)) { // 2. 交换走棋方 curQizi *= -1; } else if (checkNext(curQizi)) { // 有无,判断自己是否有棋可走,如有,给出提示 JOptionPane.showConfirmDialog(null, (curQizi == BLACK ? "白方" : "黑方") + "无棋可走," + (curQizi == 1 ? "黑方" : "白方") + "继续", "提示", JOptionPane.CLOSED_OPTION, JOptionPane.INFORMATION_MESSAGE); } else { // 游戏结束 JOptionPane.showConfirmDialog(null, "双方都无棋可走,游戏结束", "游戏结束", JOptionPane.CLOSED_OPTION, JOptionPane.INFORMATION_MESSAGE); } } } }); qizi[3][3] = WHITE; // 1为黑,-1为白,0为无棋子 qizi[3][4] = BLACK; qizi[4][3] = BLACK; qizi[4][4] = WHITE; // qizi[1][0] = 1; // // Graphics g = getGraphics(); setBackground(Color.CYAN); } /** * 验证参数代表的走棋方是否还有棋可走 * param i 代表走棋方,1为黑方,-1为白方 * return true/false */ protected boolean checkNext(int i) { return true; } protected boolean checkLocation(int cur, int i, int j) { return toLeft(cur,i,j); } /** * 从当前位置开始向左验证, * 验证过程中,j不变,i减小。

* param cur 走棋方颜色 * param i 横坐标 * param j 纵坐标 * return */ private boolean toLeft(int cur, int i, int j) { System.out.println("向左搜索"+(cur==1?"黑":"白")+"色棋子"); boolean result = false; if(i0; m--) { if(qizi[m][j] == cur) { result = true; break; } } if(result) System.out.println("左侧搜索成功"); else System.out.println("左侧搜索失败"); return result; } Override public void paint(Graphics g) { super.paint(g); // 当前走棋方 if (curQizi == 1) { // 黑色 g.setColor(Color.BLACK); } else if (curQizi == -1) { // 白色 g.setColor(Color.WHITE); } g.fillOval(5, 5, 40, 40); g.setColor(Color.BLACK); // 画横线 for (int i = 0; i

求用Java编程的黑白棋代码??

/** * 实验课作业 * author Administrator * 这个实现允许重画 */package com.test;import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.awt.image.ImageObserver;import java.text.AttributedCharacterIterator;public class GameDemo2 { /** * param args */ public static void main(String[] args) { // TODO Auto-generated method stub MainWindow mw=new MainWindow(); mw.setSize(400,400); mw.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); mw.setVisible(true); //mw.setResizable(false); }}class MainWindow extends JFrame implements ActionListener{ /** * */ private static final long serialVersionUID = 1L; NewPanel mp=null; JButton jbt1; JButton jbt2; JButton jbt3; JButton jbt4; int flag=-1; JPanel jp=null;public MainWindow(){ //初始化组件 mp=new NewPanel(); mp.addMouseListener(mp); jbt1=new JButton("O 先手"); jbt2=new JButton("X 先手 "); jbt3=new JButton("RESET"); jbt4=new JButton("EXIT"); jp=new JPanel(); GridLayout gl=new GridLayout(4,1); gl.setHgap

(4); gl.setVgap

(5); jp.setLayout(gl); jp.add(jbt1); jp.add(jbt2); jp.add(jbt3); jp.add(jbt4); this.add(mp,BorderLayout.CENTER); this.add(jp,BorderLayout.EAST); jbt1.addActionListener(this); jbt2.addActionListener(this); jbt3.addActionListener(this); jbt4.addActionListener(this); } public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub if(e.getSource()==jbt1){ flag=1; mp.setHand(0); jbt1.setEnabled(false); jbt2.setEnabled(false); } if(e.getSource()==jbt2){ flag=2; mp.setHand

(1); jbt1.setEnabled(false); jbt2.setEnabled(false); } if(e.getSource()==jbt3){ flag=3; mp.getGraphics().dispose(); this.remove(mp); mp=new NewPanel(); this.add(mp,BorderLayout.CENTER); mp.addMouseListener(mp); this.remove(jp); jp=new JPanel(); GridLayout gl=new GridLayout(4,1); gl.setHgap

(4); gl.setVgap

(5); jp.setLayout(gl); jp.add(jbt1); jp.add(jbt2); jp.add(jbt3); jp.add(jbt4); this.add(jp,BorderLayout.EAST); this.validate(); jbt1.setEnabled(true); jbt2.setEnabled(true); } if(e.getSource()==jbt4){ flag=4; jbt1.setEnabled(false); jbt2.setEnabled(false); System.exit(0); } } public int getFlag(){ return flag; }}//画板class NewPanel extends JPanel implements MouseListener{ /** * */ private static final long serialVersionUID = 1L; //记录画图的位置 int xx,yy; //flag表示是否是初始化 int flag; //0画X,1画0,2不画 int kind; //记录是有有图形的数组 //a[i]=0代表是空白可以画 a[i]=1代表X a[i]=2代表画O int []a=null; //记录当前鼠标位置所在方格,便于判断是否可以继续画 int curLoc; //记录谁先手 0-0 1-X int firstHand; int times; //0-O 1-X int whoWin; public void setFlag(int f){ flag=f; } public void setHand(int h){ firstHand=h; } public void setWhoWin(){ whoWin=-1; } public NewPanel(){ xx=0; yy=0; flag=0; a=new int[9]; kind=-1; curLoc=0; whoWin=-1; firstHand=-1; times=1; whoWin=-1; } public void paint(Graphics g){ //super.paint(g); g.drawRect(0, 0, 300, 300); g.drawRect(0, 100, 300, 100); g.drawRect(100, 0, 100, 300); if(flag==1){ if(isFull()==false){ if(testWin()==false){ if((times+firstHand)%2==0){ if(a[curLoc]==0){ g.drawLine(xx,yy,xx+60,yy+60); g.drawLine(xx+60, yy, xx, yy+60); a[curLoc]=1; times++; if(testWin()==true){ System.out.println("X赢了"); } } } if((times+firstHand)%2==1){ if(a[curLoc]==0){ g.drawOval(xx,yy,60,60); a[curLoc]=2; times++; if(testWin()==true){ System.out.println("O赢了"); } } } } }else{ System.out.println("it is FULL!!!"); } } } //将鼠标的坐标转换为所画图形的基准坐标 ,返回当前鼠标在记录数组a中的下标 //圆形为外接矩形的左上角 //X为左上角起始点的坐标 public int Format(int x,int y,int kind){ //第一行第一列 int loc=-1; if(x>=0&x=0&y=100&x=0&y=200&x=0&y=0&x=100&y=100&x=100&y=200&x=100&y=0&x=200&y=100&x=200&y=200&x=200&y

求一个黑白棋的编程代码越简单越好不要任何的附加规则只是大一的

#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;}elsecontinue;/*如果按键无效*/}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);}elseif(key==RIGHT&x80)/*右方向键*/{MoveColor(x,y);fillellipse(x,y,15,15);SetPlayColor(t);x+=40;fillellipse(x,y,15,15);}elseif(key==UP&y>120)/*上方向键*/{MoveColor(x,y);fillellipse(x,y,15,15);SetPlayColor(t);y-=40;fillellipse(x,y,15,15);}elseif(key==DOWN&y

c语言小程序黑白棋

你想做什么?人人对战的代码我有,但是人机对战的AI写不好是个国际难题 //=====othello=====#include#includeusing namespace std;int board[8][8],saveboard[60][8][8];int cx,cy,col,pass,empty,black,white;void init(){ //initialization memset(board,-1,sizeof(board)); board[3][3]=0; board[3][4]=1; board[4][4]=0; board[4][3]=1; col=0; pass=0; empty=60; black=2; white=2;}int input(){ char s[1000]=""; scanf("%s",&s); if(s[0]>='a' & s[0]='A' & s[0]='1' & s[1]=0 & j>=0; i--,j--){ if(board[i][j]=0; i--){ if(board[i][y]=0 & j

以下为关联文档:

求一个vb的拼图游戏的代码Bars bar = new Bars(); bar.setId(rs.getLong("id")); bar.setName(rs.getString("name")); bar.setType(rs.getInt("type")); bar.setCreatorId(rs.getLong("creator_id")); resul...

求用java编一个计算有多少个数字字母其他字符的代码代码如下: import java.util.Scanner; /** * 统计字符串中数字,字母,空格,其他字符的个数 * author young * */ public class Data01 { public static void main(String[] args)...

求一个简短的VB小游戏程序代码紧急!展开全部 Private Sub Command1_Click() Dim a As Integer, b As Integer, s As String MsgBox "我记住一个数,你根据我的提示猜猜是这个数是几" Randomize a = Int(Rnd * 100)...

跪求一个VC最简单的五子棋源代码'模块1 Module Module1 Dim i As Integer Dim j As Integer Dim k As Integer Dim PTab(13, 13, 479) As Boolean '定义玩家的获胜组合数组 Dim CTab(13, 13, 479) As Boole...

求一个java图书管管理软件登陆界面系统代码package pack_view; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.Font; import java.awt.Graphics; import java.awt.GridLayout; import j...

求一个简单的java能播放音乐的代码????import sun.audio.*; import java.io.*; import java.awt.*; import java.awt.event.*; class Sound5 { FileInputStream file; BufferedInputStream buf; public Sound5()...

求一段播放音乐的java代码Audio audio; File musicFile = new File("音乐.au");//音乐.au放在项目根目录下 URI uri = musicFile.toURI(); URL url = uri.toURI();//要求对象真是存在,不然会抛异常,所以要用tr...

java猜数字小游戏代码怎么写1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 importjava.util.Scanner; publicclassGuess { privatestaticfinalintF = 1; privatestaticfinalintT...

贪吃蛇 java代码import java.awt.*; import javax.swing.*; import java.awt.event.*; import java.util.*; public class SnakeGame extends JFrame implements KeyListener{ private int...

推荐阅读
图文推荐