下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Java程序设计五子棋一、源码import java.awt.*;import java.awt.event.MouseListener;import java.awt.event.MouseEvent;import java.util.Vector;import javax.swing.*;public class wuziqi extends JFrame implements MouseListenerpublic static void main(String args)wuziqi d=new wuziqi();Vector v=new Vector();Vector white=n
2、ew Vector();Vector black=new Vector();JButton btnstart =new JButton("开始");JButton btnstop =new JButton("停止");JToolBar tool=new JToolBar();boolean b; /用来判断 白棋还是黑棋 int blackcount,whitecount; /计算悔棋 /* * 构造方法 */public wuziqi()super("五子棋");this.setDefaultCloseOperation(JFram
3、e.EXIT_ON_CLOSE);/关闭按钮Container con=this.getContentPane();this.addMouseListener(this);/添加监听tool.add(btnstart);/添加按钮tool.add(btnstop);this.setSize(550,500);/设置窗体大小this.setVisible(true); int w=20; /间距大小 是双数 int px=100,py=100; /棋盘的坐标 int pxw=(px+w), pyw=(py+w); int width=w*16,height=w*16; int vline=(wi
4、dth+px); /垂直线的长度 int hline=(height+py); /水平线的长度 /* * 画棋盘 */public void paint(Graphics g)g.clearRect(0, 0, this.getWidth(), this.getHeight(); /清除面板g.setColor(Color.BLACK); /设置网格颜色g.drawRect(px, py, width, height); /网格大小g.drawString("简易五子棋", 110, 70);for(int i=0;i<15;i+)g.drawLine(pxw+i*w
5、,py,pxw+i*w,hline);/每条横线和竖线g.drawLine(px,pyw+i*w,vline,pyw+i*w);for(int x=0;x<v.size();x+)String str=(String)v.get(x);String tmp=str.split("-");int a=Integer.parseInt(tmp0);int b=Integer.parseInt(tmp1);a=a*w+px;b=b*w+py;if(x%2=0)g.setColor(Color.CYAN);elseg.setColor(Color.BLACK);g.fillA
6、rc(a-w/2, b-w/2, w, w,0,360);public void updeta(Graphics g)this.paint(g);public void victory(int x,int y,Vector contain) /判断胜利的方法int cv=0; /计算垂直的变量int ch=0; /计算水平的变量int ci1=0; /计算斜面的变量1int ci2=0; /计算斜面的变量2for(int i=1;i<5;i+)if(contain.contains(x+i)+"-"+y)ch+;elsebreak;System.out.println
7、("前面执行了"+ch+"次");for(int i=1;i<5;i+)if(contain.contains(x-i)+"-"+y)ch+;elsebreak;System.out.println("后面执行了"+ch+"次");for(int i=1;i<5;i+)if(contain.contains(x+"-"+(y+i)cv+;elsebreak;for(int i=1;i<5;i+)if(contain.contains(x+"-&qu
8、ot;+(y-i)cv+;elsebreak;for(int i=1;i<5;i+)if(contain.contains(x+i)+"-"+(y+i)ci1+;elsebreak;for(int i=1;i<5;i+)if(contain.contains(x-i)+"-"+(y-i)ci1+;elsebreak;for(int i=1;i<5;i+)if(contain.contains(x-i)+"-"+(y+i)ci2+;elsebreak;for(int i=1;i<5;i+)if(contain.c
9、ontains(x+i)+"-"+(y-i)ci2+;elsebreak;if(ch>=4|cv>=4|ci1>=4|ci2>=4)System.out.println(v.size()+"步棋");if(v.size()%2=0) /判断偶数是黑棋胜利,奇数白棋胜利JOptionPane.showMessageDialog(null,"恭喜你 黑棋赢了");elseJOptionPane.showMessageDialog(null,"恭喜你 白棋赢了");this.v.clear();t
10、his.black.clear();this.white.clear();this.repaint();System.out.println(ch+" "+cv+" "+ci1+" "+ci2);public void mouseClicked(MouseEvent e) if(e.getButton()=e.BUTTON1)int x=e.getX();int y=e.getY();x=(x-x%w)+(x%w>w/2?w:0);y=(y-y%w)+(y%w>w/2?w:0);x=(x-px)/w;y=(y-py)/w;
11、if(x>=0&&y>=0&&x<=16&&y<=16)if(v.contains(x+"-"+y)System.out.println("已有棋了");elsev.add(x+"-"+y);this.repaint();if(v.size()%2=0)black.add(x+"-"+y);this.victory(x, y,black);System.out.println("黑棋");elsewhite.add(x+&q
12、uot;-"+y);this.victory(x, y,white);System.out.println("白棋");System.out.println(e.getX()+"-"+e.getY();elseSystem.out.println(e.getX()+"-"+e.getY()+"|"+ x+"-"+y+"t超出边界");if(e.getButton()=e.BUTTON3) /悔棋方法全在这里System.out.println("鼠标右键-
13、悔棋");if(v.isEmpty()JOptionPane.showMessageDialog(this,"没有棋可以悔");elseif(v.size()%2=0) /判断是白方悔棋 还是黑方悔棋blackcount+;if(blackcount>3)JOptionPane.showMessageDialog(this, "黑棋已经悔了三步");elsev.remove(v.lastElement();this.repaint();elsewhitecount+;if(whitecount>3)JOptionPane.showMessageDialog(this, "白棋已经悔了三步");elsev.remove(v.lastElement();this.repaint();public void mouseEntered(MouseEvent e) public void mouseExited(MouseEvent e)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 成都纺织高等专科学校2026年公开考核招聘高层次人才备考题库(20人)含答案详解(满分必刷)
- 2025-2030中药国际标准化进程局限性探讨及植物药创新路线开发
- 2026江西省肿瘤医院高层次人才招聘29人备考题库(13)附参考答案详解(典型题)
- 武汉市某水土保持站招聘水土保持监测员1名备考题库含答案详解(培优a卷)
- 2026福建福州市志愿者联合会专职工作人员(劳务派遣)招聘3人备考题库带答案详解(精练)
- 江西省省直事业单位2026年统一公开招聘工作人员备考题库【1346人】附答案详解(综合题)
- 2026福建泉州安溪六中招聘编外合同制教师备考题库含答案详解
- 2025-2030新能源汽车推广应用现状审视及行业标准完善状况分析研究报告
- 2026甘肃天水长城果汁集团股份有限公司招聘6人备考题库含答案详解(突破训练)
- 2026福建晋江市灵源街道林口中心幼儿园后勤人员招聘4人备考题库附参考答案详解(考试直接用)
- DB37∕T 5237-2022 《超低能耗公共建筑技术标准》
- 手术后疼痛评估与护理团体标准
- 光伏公司销售日常管理制度
- CJ/T 510-2017城镇污水处理厂污泥处理稳定标准
- 山东省潍坊市2025届高三高考模拟考试物理试题及答案
- 企业人力资源管理效能评估表
- 2025年行政人事年终总结
- 短暂性脑缺血发作课件
- DB34T 1909-2013 安徽省铅酸蓄电池企业职业病危害防治工作指南
- 优衣库服装设计风格
- 2024年重庆中考物理模拟考试试题
评论
0/150
提交评论