六子棋Java程序设计.docx_第1页
六子棋Java程序设计.docx_第2页
六子棋Java程序设计.docx_第3页
六子棋Java程序设计.docx_第4页
六子棋Java程序设计.docx_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

六子棋Java程序设计作者:刘庆淘QQ号:543780889学号:111101009个人简介:宜宾学院,计算机学院11级创新班学生本程序简介: 对于玩家而言,我就是想让大家也让自己体验玩六子棋的乐趣。不过有点可惜就是,我至今还没有捣鼓出智能地算法出来,愿各位海涵。我还有的一个想法就是想与各位大精于java程序设计的大神们交流和学习。以下为本程序的源代码: 里们总共三个java文件皆放在了text包里: 1:Myframe.javapackage text;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JFrame;import javax.swing.JMenu;import javax.swing.JMenuBar;import javax.swing.JMenuItem;public class Myframe extends JFrame implements ActionListenerMyPanel panel=new MyPanel();public Myframe()JMenuBar menu =new JMenuBar();setJMenuBar(menu);JMenu game=new JMenu(游戏);JMenuItem newgame=game.add(新游戏);newgame.addActionListener(this);JMenu help = new JMenu(帮助);JMenuItem about=help.add(游戏规则);menu.add(game); menu.add(help); add(panel); setLocationRelativeTo(null); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); pack(); setTitle(六子棋); setVisible(true); setResizable(false); public void actionPerformed(ActionEvent arg0) panel.game_start();panel.repaint();该文件主要是用构建框架2:MyPanel.javapackage text;import java.awt.Color;import java.awt.Dimension;import java.awt.Graphics;import java.awt.Point;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;import java.util.ArrayList;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JPanel;public class MyPanel extends JPanel private ArrayList pointList; private int b=new int44;/黑子 private int w=new int44;/白子 private int bi=new int44;/黑子映射 private int wi=new int44;/白子映射 private int all=new int44; /0表示无子,1表示有子。 int be,we; /b_end w_end int f=new int44;/聚焦点 int fg=new int44;/聚焦点周围 int m=new int44;/移子 int mx = 0;int my =0; int d=new int4; /direction 移子方向 0,1,2,3分别,上右下左 int r;/判断黑子走还是白子走,0是黑子走,1是白子走。 /构造函数 public MyPanel() super.setBackground(Color.gray); pointList=new ArrayList(); setPreferredSize(new Dimension(200,240); super.addMouseListener(new mylistener(); game_start(); /设置指定棋子周围的可行值s ,值为0则不可行,值为1则可行 public int getround(int s,int x,int y) int str=0; if(x=0) if(bx+1y=0&wx+1y=0) fgx+1y=s; str+; d1=1; else if(x=3)if(bx-1y=0&wx-1y=0)fgx-1y=s;str+;d3=1;else if(x=1|x=2)if(bx+1y=0&wx+1y=0) fgx+1y=s; str+; d1=1;if(bx-1y=0&wx-1y=0)fgx-1y=s;str+;d3=1;if(y=0)if(bxy+1=0&wxy+1=0)fgxy+1=s;str+;d2=1;else if(y=3)if(bxy-1=0&wxy-1=0)fgxy-1=s;str+;d0=1;else if(y=1|y=2)if(bxy+1=0&wxy+1=0)fgxy+1=s;str+;d2=1;if(bxy-1=0&wxy-1=0)fgxy-1=s;str+;d0=1; return str; /初始化 public void game_start() r=1; int i,j; /参数全部归零 for(i=0;i4;i+) di=0; for(j=0;j4;j+) fgij=0; mij=0; bij=0; wij=0; /布置初始化棋子 for (i=0;i4;i+) for(j=0;j4;j+) if(i=0|j=0|i=3|j=3) if(j=2) wij=1; else bij=0; wij=0; /走棋 public void game_play() for(Point spot: pointList) for(int i=0;i4;i+) di=0; for(int j=0;j=30+i*50-25&spot.x=50+j*50-25&spot.y=50+j*50+25) fij=1; for(int i=0;i4;i+) for(int j=0;j4;j+) if(r=0) if(bij=1&fij=1) mij=1; this.getround(0, mx, my); this.getround(1, i, j); mx=i; my=j; System.out.println(m+mx+my+=+mmxmy); else if(fij=1&bij=0&mmxmy=1&wij=0&fgij=1) bij=1; mmxmy=0; bmxmy=0; this.getround(0, mx, my); kill(i,j); getend(); r=1; System.out.println(m+mx+my+=+mmxmy); System.out.println(R=+r); else if(mmxmy=1&fij=1) mmxmy=0; this.getround(0, mx, my); System.out.println(m+mx+my+=+mmxmy); fij=0; if(r=1) if(wij=1&fij=1) mij=1; this.getround(0, mx, my); this.getround(1, i, j); mx=i; my=j; System.out.println(m+mx+my+=+mmxmy); else if(fij=1&bij=0&mmxmy=1&wij=0&fgij=1) wij=1; mmxmy=0; wmxmy=0; this.getround(0, mx, my); kill(i,j); r=0; getend(); System.out.println(m+mx+my+=+mmxmy); System.out.println(R=+r); else if(mmxmy=1&fij=1) mmxmy=0; this.getround(0, mx, my); System.out.println(m+mx+my+=+mmxmy); fij=0; /攻击 public int kill(int i,int j) int k=0; if(i=0) if(r=0&bi+1j=1&wi+2j=1&wi+3j=0&bi+3j=0) wi+2j=0; k=1; if(r=1&wi+1j=1&bi+2j=1&wi+3j=0&bi+3j=0) bi+2j=0; k=1; else if(i=1) if(r=0&bi-1j=1&wi+1j=1&wi+2j=0&bi+2j=0) wi+1j=0; k=1; if(r=0&wi-1j=1&bi+1j=1&wi+2j=0&bi+2j=0) wi-1j=0; k=1; if(r=0&wi+2j=1&bi+1j=1&wi-1j=0&bi-1j=0) wi+2j=0; k=1; if(r=1&wi-1j=1&bi+1j=1&wi+2j=0&bi+2j=0) bi+1j=0; k=1; if(r=1&bi-1j=1&wi+1j=1&wi+2j=0&bi+2j=0) bi-1j=0; k=1; if(r=1&bi+2j=1&wi+1j=1&wi-1j=0&bi-1j=0) bi+2j=0; k=1; else if(i=2) if(r=0&bi+1j=1&wi-1j=1&wi-2j=0&bi-2j=0) wi-1j=0; k=1; if(r=0&wi+1j=1&bi-1j=1&wi-2j=0&bi-2j=0) wi+1j=0; k=1; if(r=0&wi-2j=1&bi-1j=1&wi+1j=0&bi+1j=0) wi-2j=0; k=1; if(r=1&wi+1j=1&bi-1j=1&wi-2j=0&bi-2j=0) bi-1j=0; k=1; if(r=1&bi+1j=1&wi-1j=1&wi-2j=0&bi-2j=0) bi+1j=0; k=1; if(r=1&bi-2j=1&wi-1j=1&wi+1j=0&bi+1j=0) bi-2j=0; k=1; else if(i=3) if(r=0&bi-1j=1&wi-2j=1&wi-3j=0&bi-3j=0) wi-2j=0; k=1; if(r=1&wi-1j=1&bi-2j=1&wi-3j=0&bi-3j=0) bi-2j=0; k=1; if(j=0) if(r=0&bij+1=1&wij+2=1&wij+3=0&bij+3=0) wij+2=0; k=1; if(r=1&wij+1=1&bij+2=1&wij+3=0&bij+3=0) bij+2=0; k=1; else if(j=1) if(r=0&bij-1=1&wij+1=1&wij+2=0&bij+2=0) wij+1=0; k=1; if(r=0&wij-1=1&bij+1=1&wij+2=0&bij+2=0) wij-1=0; k=1; if(r=0&wij+2=1&bij+1=1&wij-1=0&bij-1=0) wij+2=0; k=1; if(r=1&wij-1=1&bij+1=1&wij+2=0&bij+2=0) bij+1=0; k=1; if(r=1&bij-1=1&wij+1=1&wij+2=0&bij+2=0) bij-1=0; k=1; if(r=1&bij+2=1&wij+1=1&wij-1=0&bij-1=0) bij+2=0; k=1; else if(j=2) if(r=0&bij+1=1&wij-1=1&wij-2=0&bij-2=0) wij-1=0; k=1; if(r=0&wij+1=1&bij-1=1&wij-2=0&bij-2=0) wij+1=0; k=1; if(r=0&wij-2=1&bij-1=1&wij+1=0&bij+1=0) wij-2=0; k=1; if(r=1&wij+1=1&bij-1=1&wij-2=0&bij-2=0) bij-1=0; k=1; if(r=1&bij+1=1&wij-1=1&wij-2=0&bij-2=0) bij+1=0; k=1; if(r=1&bij-2=1&wij-1=1&bij+1=0&wij+1=0) bij-2=0; k=1; else if(j=3) if(r=0&bij-1=1&wij-2=1&wij-3=0&bij-3=0) wij-2=0; k=1; if(r=1&wij-1=1&bij-2=1&wij-3=0&bij-3=0) bij-2=0; k=1; return k; /判断是否挂掉 public void getend() int bs=0;/黑子能走路径总数 int ws=0;/白子能走路径总数 be=0; we=0; for(int i=0;i4;i+) for(int j=0;j4;j+) if(bij=1) be+; bs=bs+this.getround(0, i, j); if(wij=1) we+; ws=ws+this.getround(0, i, j); if(be=1|be=0|bs=0) JOptionPane.showMessageDialog(null,恭喜你 白棋赢了); else if(we=1|be=0|ws=0) JOptionPane.showMessageDialog(null,恭喜你 黑棋赢了); /画图 public void paintComponent(Graphics g) super.paintComponent(g); if(r=0) g.drawString(黑子走, 90,20); else if(r=1) g.drawString(白子走, 90, 20); for(int i=0;i4;i+) g.setColor(Color.black); g.drawLine(30,50+i*50, 180, 50+i*50); g.drawLine(30+i*50, 50, 30+i*50, 200); for(int i=0;i4;i+) for(int j=0;j4;j+) if(bij=1) g.setColor(Color.black); g.fillOval(15+i*50,35+j*50, 30, 30); if(wij=1) g.setColor(Color.white); g.fillOval(15+i*50, 35+j*50, 30, 30); if(mmxmy=1) g.setColor(Color.orange); g.fillOval(15+mx*5

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论