import javax.swing.*;
import java.awt.*;
import java.sql.*;
import javax.swing.event.*;
import java.awt.event.*;
import java.sql.Connection;
import java.text.*;
import java.util.*;
import java.util.Date;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class Listener extends MouseAdapter implements ActionListener {
Graphics g;
Chess ch;
int x1,x2,y1,y2,pedometer = 0;
int r=-1,c=-1;
int [][]record = new int[9999][6];
int allflag = 0;
private final static String uri = "jdbc:mysql://localhost:3306/nn?useSSL=true";
private final static String user = "root";
private final static String password = "";
Statement stmt;
Connection con;
ResultSet rs;
String listname;
JTextField ter,teb;
int Dateflag = 0;
String nowdate;
JComboBox<String> combo;
int replayflag = 0,replayflag1=0;
int [][]replaycord;
String replayDate;
int yxz,zyh;
public void setJTextField(JTextField ter,JTextField teb) {
this.ter = ter;
this.teb = teb;
}
public void setJComboBox(JComboBox<String> combo) {
this.combo = combo;
}
public void updaterecord() {
record[pedometer][0] = beforechess[0];
record[pedometer][1] = beforechess[1];
record[pedometer][2] = beforechess[2];
record[pedometer][3] = r;
record[pedometer][4] = c;
record[pedometer][5] = location[r][c];
if(Dateflag == 1) {
Date date = new Date();
nowdate = date.toString();
Dateflag = 0;
}
String s1 = record[pedometer][0] + " ";
String s2 = record[pedometer][1] + " ";
String s3 = record[pedometer][2] + " ";
String s4 = record[pedometer][3] + " ";
String s5 = record[pedometer][4] + " ";
String s6 = record[pedometer][5] + " ";
listname = "('"+s1+"','"+s2+"','"+s3+"','"+s4+"','"+s5+"','"+s6+"','"+nowdate+"','"+pedometer+"')";
System.out.println(nowdate);
String sqlStr = "INSERT INTO replay001(beforechess0,beforechess1,beforechess2,nowchess0,nowchess1,location,Date,number) VALUES" +listname;
try {
Class.forName("com.mysql.jdbc.Driver");
}
catch(Exception h) {
h.printStackTrace();
}
try {
con = DriverManager.getConnection(uri, user, password);
stmt = con.createStatement();
stmt.executeUpdate(sqlStr);
}
catch(Exception h) {
System.out.println("记录中不能重复"+h);
}
pedometer++;
}
public void regret() {
r=-1;
if(pedometer>0) {
location[record[pedometer-1][0]][record[pedometer-1][1]] = record[pedometer-1][2];
location[record[pedometer-1][3]][record[pedometer-1][4]] = record[pedometer-1][5];
rechessflag();
pedometer--;
String sqlStr="delete from replay001 where Date='"+nowdate+"' and number="+pedometer;
try {
Class.forName("com.mysql.jdbc.Driver");
}
catch(Exception h) {
h.printStackTrace();
}
try {
con = DriverManager.getConnection(uri, user, password);
stmt = con.createStatement();
stmt.executeUpdate(sqlStr);
}
catch(Exception h) {
System.out.println("记录中不能重复"+h);
}
}
}
public void restart() {
location = new int[][] {{1,2,3,4,5,4,3,2,1},{0,0,0,0,0,0,0,0,0},{0,6,0,0,0,0,0,6,0},{7,0,7,0,7,0,7,0,7},{0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0},{77,0,77,0,77,0,77,0,77},{0,66,0,0,0,0,0,66,0},{0,0,0,0,0,0,0,0,0},{11,22,33,44,55,44,33,22,11}};
nowchess = new int[3];
beforechess = new int[3];
r=-1;
c=-1;
record = new int[9999][6];
chessflag = 1;
}
public void actionPerformed(ActionEvent e) {
String s = e.getActionCommand();
if(s.equals("开始游戏")) {
restart();
ch.repaint();
allflag = 1;
ch.la.setText("开始!!!");
Dateflag = 1;
}
else if(s.equals("悔棋")) {
regret();
ch.repaint();
}
else if(s.equals("重新开始")){
restart();
ch.repaint();
allflag = 0;
Dateflag = 1;
}
else if(s.equals("记录")) {
listname = "('"+ter.getText()+"','"+teb.getText()+"')";
String sqlStr = "INSERT INTO match11(red,black) VALUES" +listname;
try {
Class.forName("com.mysql.jdbc.Driver");
}
catch(Exception h) {
h.printStackTrace();
}
try {
con = DriverManager.getConnection(uri, user, password);
stmt = con.createStatement();
stmt.executeUpdate(sqlStr);
}
catch(Exception h) {
System.out.println("记录中不能重复"+h);
}
}
else if(s.equals("开始复盘")) {
try {
Class.forName("com.mysql.jdbc.Driver");
}
catch(Exception h) {
h.printStackTrace();
}
try {
con = DriverManager.getConnection(uri, user, password);
stmt = con.createStatement();
rs = stmt.executeQuery("SELECT * FROM replay001");
replaycord = new int[9999][6];
yxz = 0;
while(rs.next()) {
if(rs.getString(7).equals(combo.getSelectedItem().toString().trim())) {
replaycord[yxz][0] = Integer.parseInt(rs.getString(1));
replaycord[yxz][1] = Integer.parseInt(rs.getString(2));
replaycord[yxz][2] = Integer.parseInt(rs.getString(3));
replaycord[yxz][3] = Integer.parseInt(rs.getString(4));
replaycord[yxz][4] = Integer.parseInt(rs.getString(5));
replaycord[yxz][5] = Integer.parseInt(rs.getString(6));
yxz++;
}
}
replayflag = 1;
zyh = 0;
System.out.println("yxz:"+yxz);
}
catch(Exception h) {
h.printStackTrace();
}
}
else if(s.equals("下一步")) {
if(replayflag ==1) {
if(zyh<yxz) {
location[replaycord[zyh][3]][replaycord[zyh][4]] = replaycord[zyh][2];
location[replaycord[zyh][0]][replaycord[zyh][1]] = 0;
ch.repaint();
zyh++;
}
}
}
else if(s.equals("上一步")) {
if(replayflag ==1) {
if(zyh>0) {
location[replaycord[zyh-1][0]][replaycord[zyh-1][1]] = replaycord[zyh-1][2];
location[replaycord[zyh-1][3]][replaycord[zyh-1][4]] = replaycord[zyh-1][5];
ch.repaint();
zyh--;
}
}
}
}
public void win() {
if(chessflag==1&&nowchess[2] ==5) {
ch.la.setText("红方胜!!!");
listname = "('"+ter.getText()+"')";
String sqlStr = "INSERT INTO match11(winner) VALUES" +listname;
try {
Class.forName("com.mysql.jdbc.Driver");
}
catch(Exception h) {
h.printStackTrace();
}
try {
con = DriverManager.getConnection(uri, user, password);
stmt = con.createStatement();
stmt.executeUpdate(sqlStr);
}
catch(Exception h) {
System.out.println("记录中不能重复"+h);
}
allflag = 0;
}
else if(chessflag ==2&&nowchess[2]==55) {
ch.la.setText("黑方胜!!!");
listname = "('"+teb.getText()+"')";
String sqlStr = "INSERT INTO match11(winner) VALUES" +listname;
try {
Class.forName("com.mysql.jdbc.Driver");
}
catch(Exception h) {
h.printStackTrace();
}
try {
con = DriverManager.getConnection(uri, user, password);
stmt = con.createStatement();
stmt.executeUpdate(sqlStr);
}
catch(Exception h) {
System.out.println("记录中不能重复"+h);
}
allflag = 0;
}
}
public void setG(Graphics g) {
this.g = g;
}
public void setChess(Chess ch) {
this.ch = ch;
}
int [][] location = new int[][] {{1,2,3,4,5,4,3,2,1},{0,0,0,0,0,0,0,0,0},{0,6,0,0,0,0,0,6,0},{7,0,7,0,7,0,7,0,7},{0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0},{77,0,77,0,77,0,77,0
Java小游戏中国象棋源码
需积分: 0 181 浏览量
更新于2023-04-22
6
收藏 6.57MB ZIP 举报
【Java小游戏中国象棋源码】是一个基于Java编程语言实现的桌面应用程序,它展示了如何运用Java技术来设计和开发一款互动性游戏。这个游戏是经典的中国象棋,深受广大玩家喜爱,通过这个源码,我们可以深入学习Java编程在游戏开发中的应用。
我们要了解Java作为一门面向对象的编程语言,其强大的类库和跨平台特性使其成为开发各种类型软件的理想选择,包括游戏。在本项目中,Java的Swing或JavaFX库可能被用来创建游戏的图形用户界面(GUI),这些库提供了丰富的组件和功能,用于构建美观且用户友好的界面。
源码中会包含多个类,每个类代表游戏的不同部分,如棋盘、棋子、玩家、游戏规则等。比如,`ChessBoard`类可能用于表示棋盘的逻辑和视觉呈现,`ChessPiece`类则可能用于处理棋子的移动规则和状态,而`Player`类可能负责管理玩家的操作和决策。此外,还有可能包含一个`Game`类,它作为整个游戏的控制器,协调各个部分的工作。
在游戏逻辑方面,中国象棋有复杂的规则,如“马走日”、“象飞田”、“炮打隔子”。源码中将会有对应的函数实现这些规则的判断和执行。例如,当一个棋子试图移动时,相关的合法性检查函数会确保该移动符合象棋规则,否则将拒绝操作。
在交互性方面,Java源码会使用事件监听机制,允许用户通过鼠标点击或键盘输入来控制棋子的移动。这通常涉及到`MouseListener`和`KeyListener`接口,以及事件处理方法如`mouseClicked()`和`keyPressed()`。
此外,源码中可能还包括一些优化技巧,例如使用数据结构如数组或列表来存储棋盘状态,或者使用位运算来高效地表示棋盘上的棋子分布。为了增加游戏体验,开发者可能还实现了AI算法,如简单的深度优先搜索(DFS)或更复杂的Minimax算法,让计算机能够自动与玩家对弈。
学习这个源码,开发者可以掌握Java GUI编程、面向对象设计、游戏规则的实现、事件处理以及基本的AI编程技巧。对于想要提升Java编程技能,特别是对游戏开发感兴趣的初学者来说,这是一个非常有价值的实践项目。同时,分析和理解源码有助于深化对Java特性和设计模式的理解,进一步提升编程能力。
X-MTing
- 粉丝: 2w+
- 资源: 15
最新资源
- 基于Go和React的高质量企业微信私域流量管理系统 。遵守Apache2.0协议,全网唯一免费商用。企业微信、私域流量、SCRM。详细文档+优秀项目+全部资料.zip
- 基于Go和React的企业微信的开源 SCRM 系统。企微,个微,微信,聚合聊天,自动回复,加好友。详细文档+优秀项目+全部资料.zip
- 基于go语言的搜索引擎,信息检索系统详细文档+优秀项目+全部资料.zip
- 基于Go语言,Beego框架开发的简单的文章发布管理系统。详细文档+优秀项目+全部资料.zip
- 基于Go语言的轻量级高性能的分布式日志系统详细文档+优秀项目+全部资料.zip
- 基于go语言简单的用户管理系统详细文档+优秀项目+全部资料.zip
- 基于Go语言的一个秒杀系统详细文档+优秀项目+全部资料.zip
- 基于Go语言的一个简易blog系统详细文档+优秀项目+全部资料.zip
- 基于Go语言开发,具备高安全性、高性能和易扩展性的企业级内容管理系统,详细文档+优秀项目+全部资料.zip
- 基于Go语言实现的单点登录系统详细文档+优秀项目+全部资料.zip
- 基于Go语言实现的微服务电商系统详细文档+优秀项目+全部资料.zip
- 基于python和sql server2014做的商品学生信息管理系统,有界面,利用的sql server数据库详细文档+优秀项目+全部资料.zip
- 基于OWTP协议库,封装所有与openw-server钱包服务API交互方法。用于集成到go语言开发下的应用方系统。详细文档+优秀项目+全部资料.zip
- 基于Quasar和Go语言的功能全面的管理系统详细文档+优秀项目+全部资料.zip
- 基于SpringBoot 开发的员工的季度绩效考核系统详细文档+优秀项目+全部资料.zip
- 四足机器人技术发展及其应用场景概述