- 浏览: 110831 次
- 性别:
-
最新评论
-
hjl416148489:
留言下载:http://www.sucaihuo.com/se ...
PHP留言板开发 -
a6129181:
咋样啊,我也在做数据挖掘。同行嘛。也是爬去数据分析,一塌糊涂。 ...
《推荐系统》所带给我的所感所悟 -
a6129181:
stcasshern 写道请问下能够分享一下详细代码吗?最近在 ...
用webmagic实现的网络爬虫 -
liuxu9900:
模拟登录有实现吗
用webmagic实现的网络爬虫 -
stcasshern:
请问下能够分享一下详细代码吗?最近在研究webmagic分页+ ...
用webmagic实现的网络爬虫
我的五子棋(一)
五子棋代码什么的,网上都有一堆了,不过既然是自己写的,都觉得好好的,然后我将会分四节跟大家讲解我是怎么用java做五子棋的,包括其中所用的方法和类:
这一节先上源代码哈:
全局变量:文件:Config.java;
import java.util.ArrayList;
import java.util.List;
public class Config {
public static int X0 = 50;//初始X坐标
public static int Y0 = 50;//初始Y坐标
public static int size = 35;//格子长宽
public static int size_H = 15;//行数
public static int size_L = 15;//列数
public static int count = 0;//所下步数;
public static int regret = 0;
public static List<Integer> listx = new ArrayList<Integer>();
public static List<Integer> listy = new ArrayList<Integer>();
//public static List listcount = new ArrayList();
}
主类代码:主类:Draw.java
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.event.ActionListener;
import java.awt.event.MouseListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JSeparator;
public class Draw extends JFrame {//新建界面Draw类,继承JFrame,它拥有JFrame
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Draw a = new Draw();
a.Getguit();
a.repaint();//刷新界面
}
public void Getguit()
{
this.setTitle("欢乐五子棋");
this.setSize(740,600);
this.setDefaultCloseOperation(3);//关闭窗体就退出程序
this.setLocationRelativeTo(null);//窗体显示在中央
//
ImageIcon backgroundImage = new ImageIcon("picture/backlove.jpg");
JLabel Imagebg = new JLabel(backgroundImage);
Imagebg.setBounds(0, 0, backgroundImage.getIconWidth(),backgroundImage.getIconHeight());
this.getLayeredPane().add(Imagebg,new Integer(Integer.MIN_VALUE));//添加窗体的LayeredPane面板到最底层
JPanel contentPanel = (JPanel)this.getContentPane();//获取窗体的第一层面板
contentPanel.setOpaque(false);//设置第一层面板为透明
//
JPanel eastPanel = new JPanel();//初始化面板(窗口东部)
JPanel eastPanelup = new JPanel();//初始化面板(窗口东部上部)
JPanel eastPanelmin = new JPanel();//初始化面板中部
eastPanelup.setPreferredSize(new Dimension(70,90));//(窗口东部上部留空部分)
eastPanelmin.setPreferredSize(new Dimension(100,100));//(窗口东部中部留空中间)
eastPanel.setLayout(new BorderLayout());//设置布局方式——边框布局
eastPanelmin.setLayout(new FlowLayout(FlowLayout.CENTER,10,38));
JButton jbtopen = new JButton("开始新游戏");//设置按钮1
JButton jbthui = new JButton("悔棋");//按钮2
JButton jbtvsplayer = new JButton("玩家对战");//按钮3
JButton jbtvscomputer = new JButton("人机对战");//按钮4
eastPanelmin.add(jbtopen);//放置按钮1
eastPanelmin.add(jbthui);//放置按钮2
eastPanelmin.add(jbtvsplayer);//放置按钮3
eastPanelmin.add(jbtvscomputer);//放置按钮4
eastPanel.add(eastPanelup,BorderLayout.NORTH);//放置面板eastPanelup至eastPanel北部
eastPanel.add(eastPanelmin,BorderLayout.CENTER);//放置面板eastPanelmin至eastPanel北部
this.add(eastPanel,BorderLayout.EAST);//放置面板eastPanel至this
//设置菜单栏
JMenuBar jme = new JMenuBar();
JMenu menuV = new JMenu("查看(V)");//实例化菜单栏对象
JMenuItem jmiT = new JMenuItem("帮助");
JMenuItem JmiS = new JMenuItem("作者信息");
menuV.add(jmiT);
JSeparator jse = new JSeparator();
menuV.add(jse);
menuV.add(JmiS);
jme.add(menuV);
//
this.setVisible(true);//窗体可见
Graphics g = this.getGraphics();//窗体可见后获取画布对象
MouseListener dl = new DrawListener(g,this);//实例化事件处理类的对象
this.addMouseListener(dl);//
ActionListener jbtopen2 = new OpenListener(this);//
jbtopen.addActionListener(jbtopen2);//给按钮1加监视器
ActionListener jbthui2 = new RegretListener(this);//
jbthui.addActionListener(jbthui2);//给按钮2加监视器
}
public void paint(Graphics g){
//调用父类的重绘方法
super.paint(g);
//绘制棋盘
//绘制15条
//横线
for(int i = 0;i<=Config.size_H;i++){
g.drawLine(Config.X0,Config.Y0+i*Config.size,575,Config.Y0+i*Config.size);
}
//竖线
for(int i = 0;i<=Config.size_L;i++){
g.drawLine(Config.X0+i*Config.size,Config.Y0,Config.X0+i*Config.size,575);
}
//重绘棋盘上的棋子
for(int i = 6;i<Config.size_H+12;i++){
for(int j = 6;j<Config.size_L+12;j++){
if(DrawListener.reclocation[i][j]==1){
g.setColor(Color.WHITE);
g.fillOval((Config.size*(j+1-6)),(Config.size*(i+1-6)), Config.size-5, Config.size-5);
}
if(DrawListener.reclocation[i][j]==-1){
g.setColor(Color.BLACK);
g.fillOval((Config.size*(j+1-6)),(Config.size*(i+1-6)), Config.size-5, Config.size-5);
}
}
}
}
}
鼠标监视器:(监视棋盘上的动作)文件:DrawListener.java
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.ArrayList;
import javax.swing.JOptionPane;
import com.sun.xml.internal.bind.v2.schemagen.xmlschema.List;
public class DrawListener implements MouseListener {
private int x2, y2;//坐标
private Graphics g;//画图类
private Draw a;
public int state = 1;//控制下棋的顺序
private int k2,m2;//将棋子显示在格子中央
public static int reclocation[][] = new int[Config.size_L+12][Config.size_H+12];//元素默认值为零
private int input = 9;//避免下在重复的位置而导致覆盖
DrawListener(){
}
DrawListener(Graphics g,Draw a) {
this.g = g;
this.a = a;
}
@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
x2 = e.getX();
y2 = e.getY();
k2 = (x2-Config.X0)/Config.size;//计算格子在第几行
if((x2-Config.X0)%Config.size>(Config.size/2))
{
k2 = k2+1;
}
m2 = (y2-Config.Y0)/Config.size;//计算格子在第几列
if((y2-Config.X0)%Config.size>(Config.size/2))
{
m2 = m2+1;
}
int x3 = (Config.size*(k2+1));//棋子坐标x
int y3 = (Config.size*(m2+1));//棋子坐标y
if(state == 1){//黑子下
this.judgment();//判断下在此位置是否合法
g.setColor(Color.BLACK);
System.out.println("黑棋state: "+state);
}if(state == -1){//白子下
this.judgment();//判断下在此位置是否合法
g.setColor(Color.WHITE);
System.out.println("白棋state: "+state);
}
if(input == 9){//如果合法;在界面中绘出该点
System.out.println("改变state前: "+state);
System.out.println("state改变后: "+state);
System.out.println("++++++++++++++++++++++++++++++");
this.changeState();
g.fillOval(x3,y3, Config.size-5, Config.size-5);
reclocation[m2+6][k2+6] = state;//在此位置做标记,表示此位置已经有子
}
if(Config.regret==1){
reclocation[m2+6][k2+6]=0;
a.repaint();
Config.regret=0;
}
this.judgmentwin();
}//方法封装
public void judgment(){//判断下在此位置是否合法
if(reclocation[m2+6][k2+6]==1||reclocation[m2+6][k2+6]==-1||m2>15||k2>15){//如果有子
System.out.println("下错位置咯");
input = 10;//判断为非法,无法下在此位置
}else{
input = 9;
Config.count = Config.listx.size()+1;
Config.listx.add(k2+6);
Config.listy.add(m2+6);
}
}//judgment函数结束
public void judgmentwin(){
int i;
int win = 0;//计数器水平方向
int win2 = 0;//计数器竖直方向
int win3 = 0;//计数器45度
int win4 = 0;//计数器135度
for(i = 0;i<=5;i++){
for(int j = i-5;j<i;j++){
win=win+reclocation[m2+6][k2+6+j];//检查水平方向
win2=win2+reclocation[m2+6+j][k2+6];//检查竖直方向
win3=win3+reclocation[m2+6+j][k2+6+j];//检查45°方向
win4=win4+reclocation[m2+6-j][k2+6+j];//检查135°方向
}//内部循环结束
if(win>=5||win2>=5||win3>=5||win4>=5){
JOptionPane.showMessageDialog(null,"恭喜,白棋胜利了");break;
}else if(win<=-5||win2<=-5||win3<=-5||win4<=-5){
JOptionPane.showMessageDialog(null,"恭喜,黑棋胜利了");break;
}else{//计数器全归零,重新计算
win = 0;
win2 = 0;
win3 = 0;
win4 = 0;
}
}
}//方法
public int getState(){//获取步骤
return state;
}
public void changeState(){//获取步骤
state = state*(-1);
System.out.println("使用悔棋后state: "+state);
}
}//类的封装
再来一局:文件:OpenListener.java
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class OpenListener implements ActionListener {
private Draw a;
public OpenListener(Draw a){
this.a = a;
}
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
for(int i = 6;i<Config.size_H+12;i++){
System.out.println();
for(int j = 6;j<Config.size_L+12;j++){
DrawListener.reclocation[i][j] = 0;//重置所有棋子
System.out.print(" "+DrawListener.reclocation[i][j]);//
}//内循环结束;
}//外循环结束
a.repaint();//刷新界面
Config.count = 0;
Config.listx.clear();
Config.listy.clear();
}
}
悔棋操作:文件:RegretListener.java
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JOptionPane;
public class RegretListener implements ActionListener {
private Draw a;
public RegretListener(Draw a){
this.a = a;
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
DrawListener b = new DrawListener();
if(Config.count>=1){//如果步数大于1,可执行悔棋操作
int x = Config.listx.get(Config.count-1);//获取要悔棋的点的坐标x
int y = Config.listy.get(Config.count-1);//获取要悔棋的点的坐标y
DrawListener.reclocation[y][x]=0;//
System.out.println("reclocation[x][y]"+" "+y+" "+x+" :"+DrawListener.reclocation[y][x]);//
Config.count--;//界面棋子数-1
Config.regret=1;
}//
else{//如果棋盘上没有棋子
JOptionPane.showMessageDialog(null,"已经是最后一步了");//
}//
a.repaint();//刷新
}
}
五子棋代码什么的,网上都有一堆了,不过既然是自己写的,都觉得好好的,然后我将会分四节跟大家讲解我是怎么用java做五子棋的,包括其中所用的方法和类:
这一节先上源代码哈:
全局变量:文件:Config.java;
import java.util.ArrayList;
import java.util.List;
public class Config {
public static int X0 = 50;//初始X坐标
public static int Y0 = 50;//初始Y坐标
public static int size = 35;//格子长宽
public static int size_H = 15;//行数
public static int size_L = 15;//列数
public static int count = 0;//所下步数;
public static int regret = 0;
public static List<Integer> listx = new ArrayList<Integer>();
public static List<Integer> listy = new ArrayList<Integer>();
//public static List listcount = new ArrayList();
}
主类代码:主类:Draw.java
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.event.ActionListener;
import java.awt.event.MouseListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JSeparator;
public class Draw extends JFrame {//新建界面Draw类,继承JFrame,它拥有JFrame
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Draw a = new Draw();
a.Getguit();
a.repaint();//刷新界面
}
public void Getguit()
{
this.setTitle("欢乐五子棋");
this.setSize(740,600);
this.setDefaultCloseOperation(3);//关闭窗体就退出程序
this.setLocationRelativeTo(null);//窗体显示在中央
//
ImageIcon backgroundImage = new ImageIcon("picture/backlove.jpg");
JLabel Imagebg = new JLabel(backgroundImage);
Imagebg.setBounds(0, 0, backgroundImage.getIconWidth(),backgroundImage.getIconHeight());
this.getLayeredPane().add(Imagebg,new Integer(Integer.MIN_VALUE));//添加窗体的LayeredPane面板到最底层
JPanel contentPanel = (JPanel)this.getContentPane();//获取窗体的第一层面板
contentPanel.setOpaque(false);//设置第一层面板为透明
//
JPanel eastPanel = new JPanel();//初始化面板(窗口东部)
JPanel eastPanelup = new JPanel();//初始化面板(窗口东部上部)
JPanel eastPanelmin = new JPanel();//初始化面板中部
eastPanelup.setPreferredSize(new Dimension(70,90));//(窗口东部上部留空部分)
eastPanelmin.setPreferredSize(new Dimension(100,100));//(窗口东部中部留空中间)
eastPanel.setLayout(new BorderLayout());//设置布局方式——边框布局
eastPanelmin.setLayout(new FlowLayout(FlowLayout.CENTER,10,38));
JButton jbtopen = new JButton("开始新游戏");//设置按钮1
JButton jbthui = new JButton("悔棋");//按钮2
JButton jbtvsplayer = new JButton("玩家对战");//按钮3
JButton jbtvscomputer = new JButton("人机对战");//按钮4
eastPanelmin.add(jbtopen);//放置按钮1
eastPanelmin.add(jbthui);//放置按钮2
eastPanelmin.add(jbtvsplayer);//放置按钮3
eastPanelmin.add(jbtvscomputer);//放置按钮4
eastPanel.add(eastPanelup,BorderLayout.NORTH);//放置面板eastPanelup至eastPanel北部
eastPanel.add(eastPanelmin,BorderLayout.CENTER);//放置面板eastPanelmin至eastPanel北部
this.add(eastPanel,BorderLayout.EAST);//放置面板eastPanel至this
//设置菜单栏
JMenuBar jme = new JMenuBar();
JMenu menuV = new JMenu("查看(V)");//实例化菜单栏对象
JMenuItem jmiT = new JMenuItem("帮助");
JMenuItem JmiS = new JMenuItem("作者信息");
menuV.add(jmiT);
JSeparator jse = new JSeparator();
menuV.add(jse);
menuV.add(JmiS);
jme.add(menuV);
//
this.setVisible(true);//窗体可见
Graphics g = this.getGraphics();//窗体可见后获取画布对象
MouseListener dl = new DrawListener(g,this);//实例化事件处理类的对象
this.addMouseListener(dl);//
ActionListener jbtopen2 = new OpenListener(this);//
jbtopen.addActionListener(jbtopen2);//给按钮1加监视器
ActionListener jbthui2 = new RegretListener(this);//
jbthui.addActionListener(jbthui2);//给按钮2加监视器
}
public void paint(Graphics g){
//调用父类的重绘方法
super.paint(g);
//绘制棋盘
//绘制15条
//横线
for(int i = 0;i<=Config.size_H;i++){
g.drawLine(Config.X0,Config.Y0+i*Config.size,575,Config.Y0+i*Config.size);
}
//竖线
for(int i = 0;i<=Config.size_L;i++){
g.drawLine(Config.X0+i*Config.size,Config.Y0,Config.X0+i*Config.size,575);
}
//重绘棋盘上的棋子
for(int i = 6;i<Config.size_H+12;i++){
for(int j = 6;j<Config.size_L+12;j++){
if(DrawListener.reclocation[i][j]==1){
g.setColor(Color.WHITE);
g.fillOval((Config.size*(j+1-6)),(Config.size*(i+1-6)), Config.size-5, Config.size-5);
}
if(DrawListener.reclocation[i][j]==-1){
g.setColor(Color.BLACK);
g.fillOval((Config.size*(j+1-6)),(Config.size*(i+1-6)), Config.size-5, Config.size-5);
}
}
}
}
}
鼠标监视器:(监视棋盘上的动作)文件:DrawListener.java
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.ArrayList;
import javax.swing.JOptionPane;
import com.sun.xml.internal.bind.v2.schemagen.xmlschema.List;
public class DrawListener implements MouseListener {
private int x2, y2;//坐标
private Graphics g;//画图类
private Draw a;
public int state = 1;//控制下棋的顺序
private int k2,m2;//将棋子显示在格子中央
public static int reclocation[][] = new int[Config.size_L+12][Config.size_H+12];//元素默认值为零
private int input = 9;//避免下在重复的位置而导致覆盖
DrawListener(){
}
DrawListener(Graphics g,Draw a) {
this.g = g;
this.a = a;
}
@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
x2 = e.getX();
y2 = e.getY();
k2 = (x2-Config.X0)/Config.size;//计算格子在第几行
if((x2-Config.X0)%Config.size>(Config.size/2))
{
k2 = k2+1;
}
m2 = (y2-Config.Y0)/Config.size;//计算格子在第几列
if((y2-Config.X0)%Config.size>(Config.size/2))
{
m2 = m2+1;
}
int x3 = (Config.size*(k2+1));//棋子坐标x
int y3 = (Config.size*(m2+1));//棋子坐标y
if(state == 1){//黑子下
this.judgment();//判断下在此位置是否合法
g.setColor(Color.BLACK);
System.out.println("黑棋state: "+state);
}if(state == -1){//白子下
this.judgment();//判断下在此位置是否合法
g.setColor(Color.WHITE);
System.out.println("白棋state: "+state);
}
if(input == 9){//如果合法;在界面中绘出该点
System.out.println("改变state前: "+state);
System.out.println("state改变后: "+state);
System.out.println("++++++++++++++++++++++++++++++");
this.changeState();
g.fillOval(x3,y3, Config.size-5, Config.size-5);
reclocation[m2+6][k2+6] = state;//在此位置做标记,表示此位置已经有子
}
if(Config.regret==1){
reclocation[m2+6][k2+6]=0;
a.repaint();
Config.regret=0;
}
this.judgmentwin();
}//方法封装
public void judgment(){//判断下在此位置是否合法
if(reclocation[m2+6][k2+6]==1||reclocation[m2+6][k2+6]==-1||m2>15||k2>15){//如果有子
System.out.println("下错位置咯");
input = 10;//判断为非法,无法下在此位置
}else{
input = 9;
Config.count = Config.listx.size()+1;
Config.listx.add(k2+6);
Config.listy.add(m2+6);
}
}//judgment函数结束
public void judgmentwin(){
int i;
int win = 0;//计数器水平方向
int win2 = 0;//计数器竖直方向
int win3 = 0;//计数器45度
int win4 = 0;//计数器135度
for(i = 0;i<=5;i++){
for(int j = i-5;j<i;j++){
win=win+reclocation[m2+6][k2+6+j];//检查水平方向
win2=win2+reclocation[m2+6+j][k2+6];//检查竖直方向
win3=win3+reclocation[m2+6+j][k2+6+j];//检查45°方向
win4=win4+reclocation[m2+6-j][k2+6+j];//检查135°方向
}//内部循环结束
if(win>=5||win2>=5||win3>=5||win4>=5){
JOptionPane.showMessageDialog(null,"恭喜,白棋胜利了");break;
}else if(win<=-5||win2<=-5||win3<=-5||win4<=-5){
JOptionPane.showMessageDialog(null,"恭喜,黑棋胜利了");break;
}else{//计数器全归零,重新计算
win = 0;
win2 = 0;
win3 = 0;
win4 = 0;
}
}
}//方法
public int getState(){//获取步骤
return state;
}
public void changeState(){//获取步骤
state = state*(-1);
System.out.println("使用悔棋后state: "+state);
}
}//类的封装
再来一局:文件:OpenListener.java
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class OpenListener implements ActionListener {
private Draw a;
public OpenListener(Draw a){
this.a = a;
}
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
for(int i = 6;i<Config.size_H+12;i++){
System.out.println();
for(int j = 6;j<Config.size_L+12;j++){
DrawListener.reclocation[i][j] = 0;//重置所有棋子
System.out.print(" "+DrawListener.reclocation[i][j]);//
}//内循环结束;
}//外循环结束
a.repaint();//刷新界面
Config.count = 0;
Config.listx.clear();
Config.listy.clear();
}
}
悔棋操作:文件:RegretListener.java
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JOptionPane;
public class RegretListener implements ActionListener {
private Draw a;
public RegretListener(Draw a){
this.a = a;
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
DrawListener b = new DrawListener();
if(Config.count>=1){//如果步数大于1,可执行悔棋操作
int x = Config.listx.get(Config.count-1);//获取要悔棋的点的坐标x
int y = Config.listy.get(Config.count-1);//获取要悔棋的点的坐标y
DrawListener.reclocation[y][x]=0;//
System.out.println("reclocation[x][y]"+" "+y+" "+x+" :"+DrawListener.reclocation[y][x]);//
Config.count--;//界面棋子数-1
Config.regret=1;
}//
else{//如果棋盘上没有棋子
JOptionPane.showMessageDialog(null,"已经是最后一步了");//
}//
a.repaint();//刷新
}
}
发表评论
-
用maven将java程序打包
2015-02-16 21:58 2421用maven在liunx上将java程序进行打包 随着Ma ... -
Maven入门(转载)
2015-01-05 15:05 874Maven入门介绍 1. 安装 Maven Ma ... -
Java的Unicode编码转化(多种情况处理方法)
2014-11-23 01:00 6801Java的Unicode编码转化(多种情况处理方法) Ja ... -
在centos下安装JDK
2014-11-02 18:21 1288在centos下安装JDK CentOS ... -
webmagic——魔法般的爬虫框架
2014-10-19 22:45 4934webMagic 是一个非常不错的开发框架。简单易 ... -
BMP解码器的练习
2013-09-23 20:07 853这是一个BMP解码器的练习,实现8位,24位真彩的解码,放在 ... -
编写文件搜索器——痛并快乐着
2013-09-21 18:50 815编写文件搜索器——痛并快乐着 文件搜索器的大部分代码 ... -
Enter创意工作小组项目开发工作记录(一)
2013-08-03 01:33 729Enter创意工作小组项目开发工作记录(一) 8月2日 ... -
通信基础——实现服务器与客户端的交流
2013-08-03 00:56 1009通信基础——实现服务器与客户端的交流 大家好~~~好久不见 ... -
文件操作入门
2013-07-23 00:16 636文件操作入门 这段代码实现了最基础的文件操作:查,搜,读 ... -
弹球游戏分步解析(五)——阶段性总结
2013-07-22 23:14 886弹球游戏分步解析(五)——阶段性总结 之前的《弹球游戏分 ... -
弹球游戏分步解析(四)——保存读取游戏
2013-07-22 18:32 1033弹球游戏分步解析(四)——保存读取游戏 接下来我们要说的是 ... -
弹球游戏分步解析(三)——滑块动起来
2013-07-22 17:43 1131弹球游戏分步解析( ... -
弹球游戏分步解析(二)——让小球飞
2013-07-22 16:31 2091弹球游戏分步解析(二)——让小球飞 之前跟大家说要把事件 ... -
弹球游戏分步解析(一)——界面绘制
2013-07-22 15:52 1928弹球游戏分步解析(一 ... -
自定义链表(一)——小试牛刀
2013-07-18 00:24 784自定义链表(一)——小试牛刀 我们除了上次我们讲到自定义 ... -
自定义队列(一)小试牛刀
2013-07-17 23:24 672自定义队列 学过编程语言的同学都知道,我们可以用数组来储存 ... -
分形(二)——分形树
2013-07-14 21:50 2653分形(二)——分形树 上次我们画出了谢尔宾斯基三角形,这 ... -
分形——谢尔宾斯基三角形
2013-07-13 17:59 4479分形——谢尔宾斯基三角形 普通几何学研究的对象,一般都具有整数 ...
相关推荐
内容概要:本文详细介绍了基于MATLAB GUI界面和卷积神经网络(CNN)的模糊车牌识别系统。该系统旨在解决现实中车牌因模糊不清导致识别困难的问题。文中阐述了整个流程的关键步骤,包括图像的模糊还原、灰度化、阈值化、边缘检测、孔洞填充、形态学操作、滤波操作、车牌定位、字符分割以及最终的字符识别。通过使用维纳滤波或最小二乘法约束滤波进行模糊还原,再利用CNN的强大特征提取能力完成字符分类。此外,还特别强调了MATLAB GUI界面的设计,使得用户能直观便捷地操作整个系统。 适合人群:对图像处理和深度学习感兴趣的科研人员、高校学生及从事相关领域的工程师。 使用场景及目标:适用于交通管理、智能停车场等领域,用于提升车牌识别的准确性和效率,特别是在面对模糊车牌时的表现。 其他说明:文中提供了部分关键代码片段作为参考,并对实验结果进行了详细的分析,展示了系统在不同环境下的表现情况及其潜在的应用前景。
嵌入式八股文面试题库资料知识宝典-计算机专业试题.zip
嵌入式八股文面试题库资料知识宝典-C and C++ normal interview_3.zip
内容概要:本文深入探讨了一款额定功率为4kW的开关磁阻电机,详细介绍了其性能参数如额定功率、转速、效率、输出转矩和脉动率等。同时,文章还展示了利用RMxprt、Maxwell 2D和3D模型对该电机进行仿真的方法和技术,通过外电路分析进一步研究其电气性能和动态响应特性。最后,文章提供了基于RMxprt模型的MATLAB仿真代码示例,帮助读者理解电机的工作原理及其性能特点。 适合人群:从事电机设计、工业自动化领域的工程师和技术人员,尤其是对开关磁阻电机感兴趣的科研工作者。 使用场景及目标:适用于希望深入了解开关磁阻电机特性和建模技术的研究人员,在新产品开发或现有产品改进时作为参考资料。 其他说明:文中提供的代码示例仅用于演示目的,实际操作时需根据所用软件的具体情况进行适当修改。
少儿编程scratch项目源代码文件案例素材-剑客冲刺.zip
少儿编程scratch项目源代码文件案例素材-几何冲刺 转瞬即逝.zip
内容概要:本文详细介绍了基于PID控制器的四象限直流电机速度驱动控制系统仿真模型及其永磁直流电机(PMDC)转速控制模型。首先阐述了PID控制器的工作原理,即通过对系统误差的比例、积分和微分运算来调整电机的驱动信号,从而实现转速的精确控制。接着讨论了如何利用PID控制器使有刷PMDC电机在四个象限中精确跟踪参考速度,并展示了仿真模型在应对快速负载扰动时的有效性和稳定性。最后,提供了Simulink仿真模型和详细的Word模型说明文档,帮助读者理解和调整PID控制器参数,以达到最佳控制效果。 适合人群:从事电力电子与电机控制领域的研究人员和技术人员,尤其是对四象限直流电机速度驱动控制系统感兴趣的读者。 使用场景及目标:适用于需要深入了解和掌握四象限直流电机速度驱动控制系统设计与实现的研究人员和技术人员。目标是在实际项目中能够运用PID控制器实现电机转速的精确控制,并提高系统的稳定性和抗干扰能力。 其他说明:文中引用了多篇相关领域的权威文献,确保了理论依据的可靠性和实用性。此外,提供的Simulink模型和Word文档有助于读者更好地理解和实践所介绍的内容。
嵌入式八股文面试题库资料知识宝典-2013年海康威视校园招聘嵌入式开发笔试题.zip
少儿编程scratch项目源代码文件案例素材-驾驶通关.zip
小区开放对周边道路通行能力影响的研究.pdf
内容概要:本文探讨了冷链物流车辆路径优化问题,特别是如何通过NSGA-2遗传算法和软硬时间窗策略来实现高效、环保和高客户满意度的路径规划。文中介绍了冷链物流的特点及其重要性,提出了软时间窗概念,允许一定的配送时间弹性,同时考虑碳排放成本,以达到绿色物流的目的。此外,还讨论了如何将客户满意度作为路径优化的重要评价标准之一。最后,通过一段简化的Python代码展示了遗传算法的应用。 适合人群:从事物流管理、冷链物流运营的专业人士,以及对遗传算法和路径优化感兴趣的科研人员和技术开发者。 使用场景及目标:适用于冷链物流企业,旨在优化配送路线,降低运营成本,减少碳排放,提升客户满意度。目标是帮助企业实现绿色、高效的物流配送系统。 其他说明:文中提供的代码仅为示意,实际应用需根据具体情况调整参数设置和模型构建。
少儿编程scratch项目源代码文件案例素材-恐怖矿井.zip
内容概要:本文详细介绍了基于STM32F030的无刷电机控制方案,重点在于高压FOC(磁场定向控制)技术和滑膜无感FOC的应用。该方案实现了过载、过欠压、堵转等多种保护机制,并提供了完整的源码、原理图和PCB设计。文中展示了关键代码片段,如滑膜观测器和电流环处理,以及保护机制的具体实现方法。此外,还提到了方案的移植要点和实际测试效果,确保系统的稳定性和高效性。 适合人群:嵌入式系统开发者、电机控制系统工程师、硬件工程师。 使用场景及目标:适用于需要高性能无刷电机控制的应用场景,如工业自动化设备、无人机、电动工具等。目标是提供一种成熟的、经过验证的无刷电机控制方案,帮助开发者快速实现并优化电机控制性能。 其他说明:提供的资料包括详细的原理图、PCB设计文件、源码及测试视频,方便开发者进行学习和应用。
基于有限体积法Godunov格式的管道泄漏检测模型研究.pdf
嵌入式八股文面试题库资料知识宝典-CC++笔试题-深圳有为(2019.2.28)1.zip
少儿编程scratch项目源代码文件案例素材-几何冲刺 V1.5.zip
Android系统开发_Linux内核配置_USB-HID设备模拟_通过root权限将Android设备转换为全功能USB键盘的项目实现_该项目需要内核支持configFS文件系统
C# WPF - LiveCharts Project
少儿编程scratch项目源代码文件案例素材-恐怖叉子 动画.zip
嵌入式八股文面试题库资料知识宝典-嵌⼊式⼯程师⾯试⾼频问题.zip