java实现中国象棋 源代码

java实现象棋游戏(附完整源码) 阅读详情

java实现中国象棋

在网上找了很久中国象棋实现的源代码,终于找到了,下面就是源代码。

/*
 *中国象棋Java版V3.0
 *源文件:Chess.java
 *添加功能:实现了当前棋局的保存
 */

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
import java.io.*;

//主类
public class Chess{
   
   
	public static void main(String args[]){
   
   
		new ChessMainFrame("中国象棋:观棋不语真君子,棋死无悔大丈夫");
	}
}

//主框架类
class ChessMainFrame extends JFrame implements ActionListener,MouseListener,Runnable{
   
   
	//玩家
	JLabel play[] = new JLabel[32];
	//棋盘
	JLabel image;	
	//窗格
	Container con;
	//工具栏
	JToolBar jmain;	
	//重新开始
	JButton anew;
	//悔棋
	JButton repent;
	//退出
	JButton exit;
	//当前信息
	JLabel text;
	
	//保存当前操作
	Vector Var;
	
	//规则类对象(使于调用方法)
	ChessRule rule;
	
	/**
	** 单击棋子
	** chessManClick = true 闪烁棋子 并给线程响应
	** chessManClick = false 吃棋子 停止闪烁  并给线程响应
	*/
	boolean chessManClick;
	
	/**
	** 控制玩家走棋
	** chessPlayClick=1 黑棋走棋
	** chessPlayClick=2 红棋走棋 默认红棋
	** chessPlayClick=3 双方都不能走棋
	*/
	int chessPlayClick=2;
	
	//控制棋子闪烁的线程
	Thread tmain;
	//把第一次的单击棋子给线程响应
	static int Man,i;
	
	ChessMainFrame(){
   
   
		new ChessMainFrame("中国象棋");
	}
	
	/**
	** 构造函数
	** 初始化图形用户界面
	*/
	ChessMainFrame(String Title){
   
   
		//改变系统默认字体
		Font font = new Font("Dialog", Font.PLAIN, 12);
		java.util.Enumeration keys = UIManager.getDefaults().keys();
		while (keys.hasMoreElements()) {
   
   
			Object key = keys.nextElement();
			Object value = UIManager.get(key);
			if (value instanceof javax.swing.plaf.FontUIResource) {
   
   
				UIManager.put(key, font);
			}
		}
		//获行客格引用
		con = this.getContentPane();
		con.setLayout(null);
		//实例化规则类
		rule = new ChessRule();
		Var = new Vector();
		
		//创建工具栏
		jmain = new JToolBar();
		text = new JLabel("欢迎使用象棋对弈系统");
		//当鼠标放上显示信息
		text.setToolTipText("信息提示");
		anew = new JButton(" 新 游 戏 ");
		anew.setToolTipText("重新开始新的一局");
		exit = new JButton(" 退  出 ");
		exit.setToolTipText("退出象棋程序程序");
		repent = new JButton(" 悔  棋 ");
		repent.setToolTipText("返回到上次走棋的位置");

		//把组件添加到工具栏
		jmain.setLayout(new GridLayout(0,4));
		jmain.add(anew);
		jmain.add(repent);
		jmain.add(exit);
		jmain.add(text);
		jmain.setBounds(0,0,558,30);
		con.add(jmain);
		
		//添加棋子标签
		drawChessMan();

		//注册按扭监听
		anew.addActionListener(this);
		repent.addActionListener(this);
		exit.addActionListener(this);		
				
		//注册棋子移动监听
		for (int i=0;i<32;i++){
   
   
			con.add(play[i]);
			play[i].addMouseListener(this);
		}
		
		//添加棋盘标签
		con.add(image = new JLabel(new ImageIcon("image\\Main.GIF")));
		image.setBounds(0,30,558,620);
		image.addMouseListener(this);
		
		//注册窗体关闭监听
		this.addWindowListener(
			new WindowAdapter() {
   
   
				public void windowClosing(WindowEvent we){
   
   
					System.exit(0);
				}
			}
		);
		
		//窗体居中
		Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
		Dimension frameSize = this.getSize();
		
		if (frameSize.height > screenSize.height){
   
   
			frameSize.height = screenSize.height;
		}
		if (frameSize.width > screenSize.width){
   
   
			frameSize.width = screenSize.width;
		}
		
		this.setLocation((screenSize.width - frameSize.width) / 2 - 280 ,(screenSize.height - frameSize.height ) / 2 - 350);
	
		//设置
		this.setIconImage(new ImageIcon("image\\红将.GIF").getImage());
		this.setResizable(false);
		this.setTitle(Title);
		this.setSize(558,670);
		this.show();
	}
	
	/**
	** 添加棋子方法
	*/
	public void drawChessMan(){
   
   
		//流程控制
		int i,k;
		//图标
		Icon in;
				
		//黑色棋子
		
		//车
		in = new ImageIcon("image\\黑车.GIF");
		for (i=0,k=24;i<2;i++,k+=456){
   
   		
			play[i] = new JLabel(in);
			play[i].setBounds(k,56,55,55);	
			play[i].setName("车1");			
		}	
		
		//马
		in = new ImageIcon("image\\黑马.GIF");
		for (i=4,k=81;i<6;i++,k+=342){
   
   	
			play[i] = new JLabel(in);
			play[i].setBounds(k,56,55,55);
			play[i].setName("马1");
		}
		
		//相
		in = new ImageIcon("image\\黑象.GIF");
		for (i=8,k=138;i<10;i++,k+=228){
   
   	
			play[i] = new JLabel(in);
			play[i].setBounds(k,56,55,55);
			play[i].setName("象1");
		}
		
		//士
		in = new ImageIcon("image\\黑士.GIF");
		for (i=12,k=195;i<14;i++,k+=114){
   
   
			play[i] = new JLabel(in);
			play[i].setBounds(k,56,55,55);
			play[i].setName("士1");
		}
		
		//卒
		in = new ImageIcon("image\\黑卒.GIF");
		for (i=16,k=24;i<21;i++,k+=114){
   
   
			play[i] = new JLabel(in);
			play[i].setBounds(k,227,55,55);
			play[i].setName("卒1" + i);
		}
		
		//炮
		in = new ImageIcon("image\\黑炮.GIF");			
		for (i=26,k=81;i<28;i++,k+=342){
   
   
			play[i] = new JLabel(in);
			play[i].setBounds(k,170,55,55);
			play[i].setName("炮1" + i);
		}
		
		//将
		in = new ImageIcon("image\\黑将.GIF");
		play[30] = new JLabel(in);
		play[30].setBounds(252,56,55,55);
		play[30].setName("将1");

		//红色棋子
		//车
		in = new ImageIcon("image\\红车.GIF");
		for (i=2,k=24;i<4;i++,k+=456){
   
   
			play[i] = new JLabel(in);
			play[i].setBounds(k,569,55,55);
			play[i].setName("车2");
		}
		
		//马
		in = new ImageIcon("image\\红马.GIF");
		for (i=6,k=81;i<8;i++,k+=342){
   
   
			play[i] = new JLabel(in);
			play[i].setBounds(k,569,55,55);
			play[i].setName("马2");
		}
		
		//相
		in = new ImageIcon("image\\红象.GIF");			
		for (i=10,k=138;i<12;i++,k+=228){
   
   
			play[i] = new JLabel(in);
			play[i].setBounds(k,569,55,55);
			play[i].setName("象2");
		}
		
		//士
		in = new ImageIcon("image\\红士.GIF");
		for (i=14,k=195;i<16;i++,k+=114){
   
   
			play[i] = new JLabel(in);
			play[i].setBounds(k,569,55,55);
			play[i].setName("士2");
		}
		
		//兵
		in = new ImageIcon("image\\红卒.GIF");
		for (i=21,k=24;i<26;i++,k+=114){
   
   
			play[i] = new JLabel(in);
			play[i].setBounds(k,398,55,55);
			play[i].setName("卒2" + i);
		}
		
		//炮
		in = new ImageIcon("image\\红炮.GIF");
		for (i=28,k=81;i<30;i++,k+=342){
   
   
			play[i] = new JLabel(in);
			play[i].setBounds(k,455,55,55);
			play[i].setName("炮2" + i);
		}
		
		//帅
		in = new ImageIcon("image\\红将.GIF");			
		play[31] = new JLabel(in);
		play[31].setBounds(252,569,55,55);		
		play[31].setName("帅2");
	}
	
	/**
	** 线程方法控制棋子闪烁
	*/
	public void run(){
   
   
		while (true){
   
   
			//单击棋子第一下开始闪烁
			if (chessManClick){
   
   
				play[Man].setVisible(false);

				//时间控制
				try{
   
   
					tmain.sleep(200);
				}
				catch(Exception e){
   
   
				}
				
				play[Man].setVisible(true);
			}
			
			//闪烁当前提示信息 以免用户看不见
			else {
   
   
				text.setVisible(false);
				
				//时间控制
				try{
   
   
					tmain.sleep(250);
				}
				catch(Exception e){
   
   
				}
				
				text.setVisible(true);
			}
			
			try{
   
   
				tmain.sleep(350);
			}
			catch (Exception e){
   
   
			}
		}
	}
	
	/**
	** 单击棋子方法
	*/
	public void mouseClicked(MouseEvent me){
   
   
		System.out.println("Mouse");
		
		//当前坐标
		int Ex=0,Ey=0;
		
		//启动线程
		if (tmain == null){
   
   
			tmain = new Thread(this);
			tmain.start();
		}
		
		//单击棋盘(移动棋子)
		if (me.getSource().equals(image)){
   
   
			//该红棋走棋的时候
			if (chessPlayClick == 2 && play[Man].getName().charAt(1) == '2'){
   
   	
				Ex = play[Man].getX();
				Ey = play[Man].getY();
				//移动卒、兵
				if (Man > 15 && Man < 26){
   
   
					rule.armsRule(Man,play[Man],me);
				}			
				
				//移动炮
				else if (Man > 25 && Man < 30){
   
   			
					rule.cannonRule(play[Man],play,me);
				}
				
				//移动车
				else if (Man >=0 && Man < 4){
   
   
					rule.cannonRule(play[Man],play,me);
				}
				
				//移动马
				else if (Man > 3 && Man < 8){
   
   
					rule.horseRule(play[Man],play,me);
				}
				
				//移动相、象
				else if (Man > 7 && Man < 12){
   
   
					rule.elephantRule(Man,play[Man],play,me);
				}
				
				//移动仕、士
				else if (Man > 11 && Man < 16){
   
   
					rule.chapRule(Man,play[Man],play,me);
				}
				
				//移动将、帅
				else if (Man == 30 || Man == 31){
   
   				
					rule.willRule(Man,play[Man],play,me);
				}
				
				//是否走棋错误(是否在原地没有动)
				if (Ex == play[Man].getX() && Ey == play[Man].getY()){
   
   
					text.setText("               红棋走棋");
					chessPlayClick=2;
				}
				
				else {
   
   
					text.setText("               黑棋走棋");
					chessPlayClick=1;
				}
				
			}//if
			
			//该黑棋走棋的时候
			else if (chessPlayClick == 1 && play[Man].getName().charAt(1) == '1'){
   
   
				Ex = play[Man].getX();
				Ey = play[Man].getY();

				//移动卒、兵
				if (Man > 15 && Man < 26){
   
   
					rule.armsRule(Man,play[Man],me);
				}
				
				//移动炮
				else if (Man > 25 && Man < 30){
   
   
					rule.cannonRule(play[Man],play,me);
				}
				
				//移动车
				else if (Man >=0 && Man < 4){
   
   
					rule.cannonRule(play[Man],play,me);
				}
				
				//移动马
				else if (Man > 3 && Man < 8){
   
   
					rule.horseRule(play[Man],play,me);
				}
				
				//移动相、象
				else if (Man > 7 && Man < 12){
   
   
					rule.elephantRule(Man,play[Man],play,me);
				}
				
				//移动仕、士
				else if (Man > 11 && Man < 16){
   
   
					rule.chapRule(Man,play[Man],play,me);
				}
				
				//移动将、帅
				else if (Man == 30 || Man == 31){
   
   
					rule.willRule(Man,play[Man],play,me);
				}
				
				//是否走棋错误(是否在原地没有动)
				if (Ex == play[Man].getX() && Ey == play[Man].getY()){
   
   
					text.setText("               黑棋走棋");
					chessPlayClick=1;
				}
				
				else {
   
   
					text.setText("               红棋走棋");
					chessPlayClick=2;	
				}

							
			}//else if		
			
			//当前没有操作(停止闪烁)
			chessManClick=false;
			
		}//if
		
		//单击棋子
		else{
   
   
			//第一次单击棋子(闪烁棋子)
			if (!chessManClick){
   
   
				for (int i=0;i<32;i++){
   
   
					//被单击的棋子
					if (me.getSource().equals(play[i])){
   
   
						//告诉线程让该棋子闪烁
						Man=i;
						//开始闪烁
						chessManClick=true;
						break;
					}
				}//for
			}//if
			
			//第二次单击棋子(吃棋子)
			else if (chessManClick){
   
   
				//当前没有操作(停止闪烁)
				chessManClick=false;
				
				for (i=0;i<32;i++){
   
   
					//找到被吃的棋子
					if (me.getSource().equals(play[i])){
   
   
						//该红棋吃棋的时候
						if (chessPlayClick == 2 && play[Man].getName().charAt(1) == '2'){
   
   
							Ex = play[Man].getX();
							Ey = play[Man].getY();
							
							//卒、兵吃规则
							if (Man > 15 && Man < 26){
   
   
								rule.armsRule(play[Man],play[i]);
							}
							
							//炮吃规则
							else if (Man > 25 && Man < 30){
   
   
								rule.cannonRule(0,play[Man],play[i],play,me);
							}
							
							//车吃规则
							else if (Man >=0 && Man < 4){
   
   
								rule.cannonRule(1,play[Man],play[i],play,me);
							}
							
							//马吃规则
							else if (Man > 3 && Man < 8){
   
   
								rule.horseRule(play[Man],play[i],play,me);	
							}
							
							//相、象吃规则
							else if (Man > 7 && Man < 12){
   
   
								rule.elephantRule(play[Man],play[i],play);
							}
							
							//士、仕吃棋规则
							else if (Man > 11 && Man < 16){
   
   
								rule.chapRule(Man,play[Man],play[i],play);
							}
							
							//将、帅吃棋规则
							else if (Man == 30 || Man == 31){
   
   
								rule.willRule(Man,play[Man],play[i],play);
								play[Man].setVisible(true);	
							}
							
							//是否走棋错误(是否在原地没有动)
							if (Ex == play[Man].getX() && Ey == play[Man].getY()){
   
   
								text.setText("               红棋走棋");
								chessPlayClick=2;
								break;
							}
														
							else{
   
   
								text.setText("               黑棋走棋");
								chessPlayClick=1;
								break;
							}	
							
						}//if
						
						//该黑棋吃棋的时候
						else if (chessPlayClick == 1 && play[Man].getName().charAt(1) == '1'){
   
   
							Ex = play[Man].getX();
							Ey = play[Man].getY();
													
							//卒吃规则
							if (Man > 15 && Man < 26){
   
   
								rule.armsRule(play[Man],play[i]);
							}
							
							//炮吃规则
							else if (Man > 25 && Man < 30){
   
   
								rule.cannonRule(0,play[Man],play[i],play,me);
							}
							
							//车吃规则
							else if (Man >=0 && Man < 4){
   
   
								rule.cannonRule(1,play[Man],play[i],play,me);	
							}
							
							//马吃规则
							else if (Man > 3 && Man < 8){
   
   
								rule.horseRule(play[Man],play[i],play,me);
							}
							
							//相、象吃规则
							else if (Man > 7 && Man < 12){
   
   
								rule.elephantRule(play[Man],play[i],play);
							}
							
							//士、仕吃棋规则
							else if (Man > 11 && Man < 16){
   
   
								rule.chapRule(Man,play[Man],play[i],play);
							}
							
							//将、帅吃棋规则
							else if (Man == 30 || Man == 31){
   
   
								rule.willRule(Man,play[Man],play[i],play);
								play[Man].setVisible(true);			
							}
							
							//是否走棋错误(是否在原地没有动)
							if (Ex == play[Man].getX() && Ey == play[Man].getY()){
   
   
								text.setText("               黑棋走棋");
								chessPlayClick=1;
								break;
							}
				
							else {
   
   
								text.setText("               红棋走棋");
								chessPlayClick=2;	
								break;
							}
														
						}//else if 
						
					}//if
					
				}//for
				
				
				//是否胜利
				if (!play[31].isVisible()){
   
   
					JOptionPane.showConfirmDialog(
						this,"黑棋胜利","玩家一胜利",
						JOptionPane.DEFAULT_OPTION,JOptionPane.WARNING_MESSAGE);
					//双方都不可以在走棋了
					chessPlayClick=3;
					text.setText("  黑棋胜利");
					
				}//if 

				else if (!play[30].isVisible()){
   
   
					JOptionPane.showConfirmDialog(
						this,"红棋胜利","玩家二胜利",
						JOptionPane.DEFAULT_OPTION,JOptionPane.WARNING_MESSAGE);
					chessPlayClick=3;
					text.setText("  红棋胜利");
				}//else if	
				
			}//else
			
		}//else
		
	}
	
	public void mousePressed(MouseEvent me){
   
   
	}
	public void mouseReleased(MouseEvent me){
   
   
	}
	public void mouseEntered(MouseEvent me){
   
   
	}
	public void mouseExited(MouseEvent me){
   
   
	}
	
	/**
	** 定义按钮的事件响应
	*/
	public void actionPerformed(ActionEvent ae) {
   
   
		//重新开始按钮
		if (ae.getSource().equals(anew)){
   
   
			int i,k;
			//重新排列每个棋子的位置
			//黑色棋子
		
			//车
			for (i=0,k=24;i<2;i++,k+=456){
   
   		
				play[i].setBounds(k,56,55,55);	
			}	
			
			//马
			for (i=4,k=81;i<6;i++,k+=342){
   
   	
				play[i].setBounds(k,56,55,55);
			}
			
			//相
			for (i=8,k=138;i<10;i++,k+=228){
   
   	
				play[i].setBounds(k,56,55,55);
			}
			
			//士
			for (i=12,k=195;i<14;i++,k+=114){
   
   
				play[i].setBounds(k,56,55,55);
			}
			
			//卒
			for (i=16,k=24;i<21;i++,k+=114){
   
   
				play[i].setBounds(k,227,55,55);
			}
			
			//炮
			for (i=26,k=81;i
中国象棋游戏与AI算法的Java实现源代码 本文还有配套的精品资源,点击获取 简介:本文介绍了一个基于Java语言实现的中国象棋游戏项目,旨在帮助学生深入理解游戏规则、逻辑和人工智能算法。项目包括棋盘和棋子的表示、合法移动的逻辑、AI算法及评估函数的实现,以及各主要类的设计。该资源提供了学习Java编程和智能算法的实践平台,并通过源代码注释和文档说明来促进理解和使用。 1. 中国象棋基本规则介绍 中国... 阅读详情

相关推荐

JAVA实现中国象棋的完整源代码

中国象棋棋盘由9列10行组成,分为红黑两方,每方拥有将、士、象、马、车、炮、兵共7种棋子。游戏的目标是“将死”对方的将(帅),在走棋过程中,每方必须遵守“棋子行走规则”和“将军与应将规则”。JAVA提供了多种图形用户界面(GUI)库,其中AWT(Abstract Window Toolkit)和Swing是最早期且最常用的两个库。两者都是基于JAVA的GUI工具包,提供了一系列的组件用于构建图形用户界面,但它们的设计哲学和功能有所不同。AWT是JAVA最初的GUI库。

weixin_42590539的博客 786

Java实现中国象棋游戏:源代码与可运行包

中国象棋是一款源远流长的策略性游戏,在计算机上实现这款经典游戏是理解计算机科学与人机交互的良好实践。本章将介绍如何使用Java编程语言构建一个基础的中国象棋游戏,并在后续章节中深入探讨相关的编程技巧、设计原则和高级功能。设计模式是软件开发中解决特定问题的模板和经验总结,它们可以被重用,以提高代码的可维护性和可复用性。在面向对象设计中,理解并应用设计模式是提升软件质量的关键。

weixin_35509395的博客 792

中国象棋java源代码

一个简单的中国象棋源代码,java语言,可以运行,不过个人感觉结构不是很好(所有的东西都写在一个类里面了),仅供大家参考

java版中国象棋源码-YuanNews-master:元讯大师

java版中国象棋源码 YuanNews 基于用户兴趣标签的新闻推荐系统(毕业设计) ##注意事项 界面的修改,均已index.jsp修改为主,在进行子界面的修改,保持统一性! tomcat的使用 : 部署yuanews-web.war explor 包,运行时,见运行菜单! ps : 所有的jsp页面中的链接 添加 request.getContextPath() , 确保路径正确使用!! 代码中使用到了重定向等页面跳转,添加 request.getContextPath() , 确保路径正确使用!! dao 层中的接口不要随意修改,如果需要修改,一定要要修改mapper中的参数!! dao mapper中的参数不一定正确,注意看出错信息,已确定错误来源!! controller中在返回值的时候,注意添加注解:@ResponseBody !! 注意事项,jsp页面中的img标签添加获取项目名路径 ( request.getContextPath() )  ##原理图 架构-服务端 架构-客户端 主页-查询思路 推荐策略(后台) 推荐显示(前台) 推荐通知原理(Android) 爬虫原

java中国象棋源码

这是用java编写的中国象棋,可运行,里面有详细的代码注释,里面对算法进行了详细完整的分析,可读性很强,很适合学习用。

JAVA 实现《中国象棋》游戏-全部源码

# 主要设计 1、寻找棋盘界面和对应的棋子图片,程序设计棋盘界面和功能菜单 2、设计不同的棋子的移动逻辑 3、棋子移动时,要有音效 4、设计对手AI的逻辑算法,这里运用了极大极小值搜索算法,设置不同的搜索深度AI(智能不同) 5、对局开始前,双方棋子在棋盘上的摆法。 6、对局时,由执红棋的一方先走,双方轮流走一步。 7、轮到走棋的一方,将某个棋子从一个交叉点走到另一个交叉点,或者吃掉对方的棋子而占领其交叉点,都算走了一着。 8、双方各走一着,称为一个回合。 9、走一着棋时,如果己方棋子能够走到的位置有对方棋子存在,就可以把对方棋子吃掉而占领那个位置。 10、一方的棋子攻击对方的帅(将),并在下一着要把它吃掉,称为“照将”,或简称“将”。“照将”不必声明。被“照将”的一方必须立即“应将”,即用自己的着法去化解被“将”的状态。如果被“照将”而无法“应将”,就算被“将死”。 11、特别设计了人机对弈,人人对弈,还有AI对AI对弈 需要技术指导,写项目程序,等更多服务请加微信xiaoxuzhu01联系博主

中国象棋(人机对弈)源代码.rar_chess_中国象棋_中国象棋人机_人机对弈_象棋程序

这是一款人机对弈的中国象棋程序,可以选择搜索层数,可以悔棋。

Java版中国象棋人机对战源代码

内容索引:JAVA源码,游戏娱乐,中国象棋,人机对战  Java版中国象棋人机对战源代码,作者将AI算法用得淋漓尽致,具有很高的学习研究价值。运行时如截图所示。   

Java小游戏中国象棋源码

Java小游戏中国象棋源码

STM32F103C8T6用官方bootloader实现IAP升级操作方法

在使用STM32F103C8T6单片机IAP功能时,可以自己写bootloader程序,也可以使用官方bootloader文件。下面说一下使用官方bootloader的使用方法。 首先下载官方bootloader文件 目前使用的是这个版本,打开文件夹,选择适合自己编译器的工程。 目前使用的是keil,所以打开MDK-ARM文件夹 打开IAP工程 打开后根据自己的单片机型号,对工程进行简单的修...

HXYDJ的博客 1万+

具身智能四大技术路线:VLA、大小脑、世界模型与强化学习

具身智能是机器人实现感知-决策-执行闭环的核心范式,其本质在于物理世界中的具身化交互能力。技术演进围绕如何高效建模环境、理解指令并生成鲁棒动作展开,衍生出四大主流路径:视觉-语言-动作(VLA)端到端学习、大小脑分层控制、世界模型驱动预测,以及强化学习原生策略优化。VLA强调多模态对齐与泛化能力,适合语义理解优先场景;大小脑架构兼顾实时性与可解释性,是工业落地的高可靠选择;世界模型追求内在物理模拟,代表长期认知跃迁方向;强化学习则扎根仿真试错,在力控、抓取等连续控制任务中展现强鲁棒性。本文聚焦这四大路线的技

weixin_32181267的博客 292

三角洲行动交易行自动化脚本

DFMarketBot - 三角洲行动自动交易助手 DFMarketBot是一款专为三角洲行动游戏设计的交易行自动化工具,通过OCR识别和鼠标模拟实现自动补卡、补子弹功能。项目采用Python开发,支持Windows平台,主要功能包括: 自动检测并购买指定物品(房卡/子弹) 价格监控与智能购买(低于设定价格自动下单) 自定义购买数量与次数限制 支持窗口/无窗口两种游戏模式 使用前需安装Tesseract OCR引擎并配置游戏为1920*1080分辨率。通过JSON文件可灵活配置监控物品清单、理想价格和购买策

愤怒的阿木木的博客 3万+

无人机蜂群作战设计技术详解

构建防御网络,拦截敌方无人机或导弹;无人机蜂群作战设计技术是一种创新的军事应用概念,它基于生物仿生学原理,通过先进的通信技术、自主导航与决策算法,将大量小型、低成本、功能各异的无人机组织成一个高度协同的群体,以执行复杂多样的军事任务。无人机蜂群作战的概念源于自然界中蜜蜂、蚂蚁等生物群体的行为模式,这些生物群体通过简单的个体间的信息交互和分工协作,能够完成远远超出单一个体能力的复杂任务。其中,无人机群体是执行任务的主体,指挥控制系统负责任务分配和决策,通信数据链则保障无人机群体与指挥控制系统之间的信息交换。

专注多旋翼、复合翼无人机技术研究,从事低空经济行业。 2214

PaddleOCR实战:如何在CentOS 8.5上搭建高性能OCR识别环境

本文详细介绍了在CentOS 8.5系统上搭建高性能PaddleOCR识别环境的完整指南。从系统环境准备、PaddlePaddle框架部署到PaddleOCR的定制化安装与性能优化,提供了针对生产环境的解决方案,包括GPU/CPU环境配置、内核参数调优及常见问题排查,帮助用户实现高效OCR识别。

weixin_29223603的博客 349

PX4自定义uORB消息与MAVLink消息映射实战:从飞控到QGC地面站完整流程解析

本文详细解析PX4飞控中自定义uORB消息与MAVLink消息映射的完整流程,涵盖从飞控内部消息定义、MAVLink消息创建到QGC地面站接收显示的全链路实践。重点介绍如何使用mavlink inspector工具进行调试,解决版本兼容性和多实例消息处理等常见问题,为无人机开发者提供可靠的实时数据监控方案。

ll5678的博客 1067

【实战解析】RTL8306MB交换芯片驱动开发中的RMII接口调试陷阱

本文深入剖析了RTL8306MB交换芯片驱动开发中RMII接口的典型调试陷阱。通过一个工业网关项目的实战案例,揭示了因硬件原理图设计疏忽导致TX_EN与CRS_DV信号线错接,从而引发网络“哑火”的根本原因。文章详细展示了使用示波器从时钟、数据到控制信号的系统性排查方法,并总结了关键的设计警示与自查清单,为嵌入式网络开发中的软硬件协同调试提供了宝贵经验。

qqq44的博客 1028

(8)机器人动力学

机器人是一个具有多输入多输出的复杂动力学系统,存在严重的非线性,需要非常系统的方法对机器人进行动力学研究。常用的机器人动力学建模方法有:Lagrange(拉格朗日)动力学方法、Newton-Euler(牛顿-欧拉)动力学方法、Gauss(高斯)动力学方法、Kane(凯恩)动力学方法等。机器人动力学研究的是机器人的运动和作用力之间的关系。机器人的动力学问题包括动力学正问题和动力学逆问题。动力学正问题是对于给定的关节驱动力......

rouyu308的博客 9498

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

上一篇: Eclipse+Maven+SSM整合
下一篇: Bootstrap中关于Checkbox全选实现不了的问题
错过了时间
博客等级 码龄8年 139粉丝 37原创
评论 26
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值