最近开始学习Java,为了初步的熟悉Java,所以编写了一个五子棋的小程序来练手,接下来就先上图了
这是工程截图,接下来是程序运行的截图
程序的界面十分简单,棋盘和棋子都是自己画的,现在也只有这个水平了。。。
已经实现了五子棋的基本功能,如可以轮流下子、判断输赢等。但是还
是有很多缺陷的,但毕竟我还是个初学者,实现多少是多少吧。。。
近期对于界面的话不会做太多改变,现在最大的缺陷是还不能人机对战(这可不是想做就做得好的),这几天和同学一起研究机器人下子的算法可真是想破了头,要考虑的实在太多。。。
希望可以尽快写出可以接受的算法
public class wziUI extends JFrame{
private int[][] chesse = new int[Num.H][Num.L];
public static void main(String[] args){
wziUI W = new wziUI();
W.showUI();
}
public void showUI() {
this.setTitle("简单五子棋");
this.setSize(600, 600);
this.setDefaultCloseOperation(3);
this.setVisible(true);
Graphics g = this.getGraphics();
wziListener lis = new wziListener(g,chesse,this);
this.addMouseListener(lis);
}
public class wziListener implements java.awt.event.MouseListener{
private Graphics g;
private int[][] chesse;
private int count = 0;
private int jud = 0;
private JFrame wzi;
public wziListener(Graphics g,int[][] chesse,JFrame wzi){
this.g = g;
this.chesse = chesse;
this.wzi = wzi;
}
@Override
public void mouseReleased(MouseEvent e) {
int x = e.getX();
int y = e.getY();
for(int i = 0;i<Num.H;i++){
for(int j = 0;j<Num.L;j++){
int x1 = Num.X0+Num.SIZE*j;
int y1 = Num.Y0+Num.SIZE*i;
if(Math.abs(x-x1)<Num.C_SIZE/3&&Math.abs(y-y1)<Num.C_SIZE/3)
{
drawQZ(x1,y1,i,j);judge(chesse,wzi);
return;
}
}
}
}
public void drawQZ(int x1,int y1,int i,int j){
if(count == 0){
chesse[i][j] = Num.BLACK_C;
g.setColor(java.awt.Color.BLACK);
count++;
}else{
chesse[i][j] = Num.WHITE_C;
g.setColor(java.awt.Color.WHITE);
count--;
}
g.fillOval(x1-Num.C_SIZE/2, y1-Num.C_SIZE/2, Num.C_SIZE, Num.C_SIZE);
}
public void judge(int[][] chesse,JFrame wzi){
for(int i= 0;i<Num.H;i++){
for(int j = 0;j<Num.L-4;j++){
if(chesse[i][j]==Num.BLACK_C&&chesse[i][j+1]==Num.BLACK_C&&chesse[i][j+2]==Num.BLACK_C&&chesse[i][j+3]==Num.BLACK_C&&chesse[i][j+4]==Num.BLACK_C){
//wzi.dispose();
JFrame win = new JFrame("结果判定");
win.setSize(150,100);
win.setDefaultCloseOperation(3);
win.setVisible(true);
JLabel la = new JLabel("黑子获胜!");
win.add(la);
win.setLocation(260, 260);
}else if(chesse[i][j]==Num.WHITE_C&&chesse[i][j+1]==Num.WHITE_C&&chesse[i][j+2]==Num.WHITE_C&&chesse[i][j+3]==Num.WHITE_C&&chesse[i][j+4]==Num.WHITE_C){
//wzi.dispose();
JFrame win = new JFrame("结果判定");
win.setSize(150,100);
win.setDefaultCloseOperation(3);
win.setVisible(true);
JLabel la = new JLabel("白子获胜!");
win.add(la);
win.setLocation(260, 260);
}
}
}
- 大小: 124.3 KB
- 大小: 151.5 KB
- 大小: 54 KB
- 大小: 48 KB
- 大小: 58.6 KB
分享到:
相关推荐
退出提示 实现一个简单的多用户五子棋的游戏程序,包括如下两个界面 (1)选择对弈桌(执黑、执白)。 (2)在游戏界面,有开始,退出(游戏未结束、点退出自动判负); 1.3需求分析与设计思路 1. 用户需求调查分析 ...
Java 五子棋小游戏是一款简单易上手的棋类游戏,它采用了经典五子棋的规则和玩法,并在游戏界面设计中融合了精美的图形与音效。 在游戏中,玩家扮演黑白两色的棋手,通过交替下棋来竞争胜利。胜利的条件是先将五个...
基于Java的五子棋游戏是一个结合Java编程语言与图形用户界面(GUI)技术的经典棋类游戏项目。该游戏旨在为用户提供一个简单、直观且富有挑战性的五子棋对战平台,让玩家能够享受五子棋带来的乐趣与竞技体验。 在...
本文档详细介绍了一款基于Java的五子棋游戏的设计与实现过程。该游戏不仅具有基本的游戏功能,还提供了诸如悔棋、计时等高级功能,以满足不同玩家的需求。同时,游戏界面美观,操作简单,易于上手。 源代码结构清晰...
该资源适合于初学者去更好的理解Java运行和开发的实质,有利于初学者更好地上手。另外文件中除了游戏详细开发教程外,还附带源码和可执行文件,读者可在JAVA环境中运行实现。
五子棋是世界智力运动会竞技项目之一,是一种两人对弈的纯策略型棋类游戏,是世界智力运动会竞技项目之一,通常双方分别使用黑白两色的棋子,下在棋盘直线与横线的交叉点上,先形成5子连线者获胜。 棋具与围棋通用,...
五子棋相传起源于四千多年前的尧帝时期,比围棋的历史还要悠久,可能早在“尧造围棋”之前,...五子棋容易上手,老少皆宜,而且趣味横生,引人入胜;它不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。
本毕设旨在设计并实现一款基于JAVA的五子棋手机网络对战游戏。该游戏具有以下特点: - 用户可以通过手机客户端实现与其他用户的网络对战。 - 游戏界面简洁美观,操作简单易上手。 - 游戏引擎使用JAVA语言编写,具有...
很好的java学习材料
此系统为智力游戏,采用JAVA的MVC模式,根据不同功能划分不同模块,该五子棋游戏功能虽然简单,然是实现了人机对战,所以从这个角度来说,此款游戏能准确的计算棋局。虽然系统不大,但是可以实现基本的五子棋功能,...
js实现的简单AI五子棋, 使用canvas实现. 实现了评估函数.
使用EasyX库开发的五子棋小游戏,在vs2013运行成功。EasyX是针对 C++ 的图形库,可以帮助 C/C++ 初学者快速上手图形和游戏编程
Java项目上手练习学习项目
java轻松上手PDF文件,从JAVA简介、程序设计环境的建立,到高级UGI设计,JAVA的网络传输功能,共有十章内容,详细介绍了JAVA的基础知识,是JAVA爱好者不可多得的教程。
Java轻松上手.part2
Java基础教程:PPT格式,生动讲解Java的基础知识,帮助初学者快速上手。
Internet 实务系列丛书 Java轻松上手
在java中一般辅助功能使用继承和委托,用java语言实现一个简单的委托
java基础(看一遍即可上手) java基础(看一遍即可上手)
Java五子棋游戏:基于Java开发,包含141个文件,包括40个JPG图像文件、28个PNG图像文件、25个Java类文件、16个XML配置文件、...该项目是一个五子棋游戏,支持单人和双人对战模式,界面简洁,易于上手,适合学习和娱乐。