Java从入门到删库跑路——五子棋小游戏(1)

一.swing编程

1.一个在屏幕的正中央的窗口

package org.liky.game.test;

import java.awt.Toolkit;

import javax.swing.JFrame;

public class Test {
	public static void main(String[] args) {
		//创建原始窗口
		JFrame jf =new JFrame();
		//设置窗体是否显示
		jf.setVisible(true);
		//标题
		jf.setTitle("FiveChess");
		jf.setSize(800, 400);
		//jf.setLocation(200, 100);
		
		//窗体不可调整大小,关闭窗体时关闭应用程序
		jf.setResizable(false);
		jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		//自动检测分辨率,并根据检测结果计算,把窗体放在正中央
		//Toolkit.getDefaultToolkit().getScreenSize()静态方法,无需维护
		int width =Toolkit.getDefaultToolkit().getScreenSize().width;
		int height = Toolkit.getDefaultToolkit().getScreenSize().height;
		System.out.println("width  "+width+"|height "+height);
		
		//窗口放在屏幕中央
		jf.setLocation((width-800)/2, (height-400)/2);
		
	}

}

2.程序的主窗体在主程序的main方法中建立显然不合适,不符合面向对象的编程思想。为此需要把主窗体包装成类,封装起来。

package org.liky.game.test;

import org.liky.game.frame.FiveChessFrame;

public class Test {
	public static void main(String[] args) {
		FiveChessFrame ff =new FiveChessFrame();
		
	}

}
package org.liky.game.frame;

import java.awt.Toolkit;

import javax.swing.JFrame;

public class FiveChessFrame extends JFrame{
	//Toolkit.getDefaultToolkit().getScreenSize()静态方法,无需维护
	int width =Toolkit.getDefaultToolkit().getScreenSize().width;
	int height = Toolkit.getDefaultToolkit().getScreenSize().height;
	
	
	public FiveChessFrame() {
		// TODO Auto-generated constructor stub
		//创建原始窗口
		
		//设置窗体是否显示
		this.setVisible(true);
		//标题
		this.setTitle("FiveChess");
		this.setSize(800, 400);
		//jf.setLocation(200, 100);
		
		//窗体不可调整大小,关闭窗体时关闭应用程序
		this.setResizable(false);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		//窗口放在屏幕中央
		this.setLocation((width-800)/2, (height-400)/2);
		
	}	
}

二.JOptionPane消息框

利用JOptionPane类中的各个静态方法来生成各种标准的对话框,实现显示出信息、提出问题、警告和用户输入参数等功能。这些对话框都是模式对话框。

测试JOptionPane

package org.liky.game.test;

import javax.swing.JOptionPane;

import org.liky.game.frame.FiveChessFrame;

public class Test {
	public static void main(String[] args) {
		FiveChessFrame ff =new FiveChessFrame();
		
		JOptionPane.showMessageDialog(ff, "游戏开始");
		int result = JOptionPane.showConfirmDialog(ff, "现在开始游戏?");
		if (result ==0) {
			JOptionPane.showMessageDialog(ff, "游戏开始");
		}
		if (result ==1) {
			JOptionPane.showMessageDialog(ff, "游戏结束");
		}
		if (result ==2) {
			JOptionPane.showMessageDialog(ff, "请重新选择");
		}
		
		String username = JOptionPane.showInputDialog("请输入你的姓名:   ");
		if(username !=null) {
			System.out.println(username);
			JOptionPane.showMessageDialog(ff, "输入的姓名为:   "+username);
		}else {
			JOptionPane.showMessageDialog(ff, "请重新输入你的姓名");
		}
		
	}

}

三.MouseListener监听鼠标

mousePressed>mouseReleased>mouseClicked (判断按下与抬起是否在同一位置)

测试MouseListener

package org.liky.game.frame;

import java.awt.Toolkit;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

import javax.swing.JFrame;
import javax.swing.JOptionPane;

public class FiveChessFrame extends JFrame implements MouseListener{
	//Toolkit.getDefaultToolkit().getScreenSize()静态方法,无需维护
	int width =Toolkit.getDefaultToolkit().getScreenSize().width;
	int height = Toolkit.getDefaultToolkit().getScreenSize().height;
	
	//棋子坐标
	int x=0,y=0;
	//保存棋子坐标(0无棋子,1黑子,2白子)
	int[][] allChess =new int[19][19];
	//标识下一步是白是黑
	boolean isBlack = true;
	//标识游戏是否可以继续
	boolean canPlay = true;
	//保存显示的提示信息
	String message = "黑方先行";
	//保存最多拥有多少时间( 秒)
	int maxTime = 0;
	//保存双方剩余时间
	int blackTime=0,whiteTime=0;
	//保存双方剩余时间的显示信息
	String blackMessage = "无限制",whiteMessage = "无限制";

	
	public FiveChessFrame() {
		// TODO Auto-generated constructor stub
		
		//设置窗体是否显示
		this.setVisible(true);
		//标题
		this.setTitle("FiveChess");
		this.setSize(800, 400);
		//jf.setLocation(200, 100);
		//窗体不可调整大小,关闭窗体时关闭应用程序
		this.setResizable(false);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);	
		//窗口放在屏幕中央
		this.setLocation((width-800)/2, (height-400)/2);
		
		
		//加入监听器
		this.addMouseListener(this);
	}
	
	
	@Override
	public void mouseClicked(MouseEvent arg0) {
		// TODO Auto-generated method stub
		JOptionPane.showMessageDialog(this, "鼠标单击");
		
	}
	@Override
	public void mouseEntered(MouseEvent arg0) {
		// TODO Auto-generated method stub
		
	}
	@Override
	public void mouseExited(MouseEvent arg0) {
		// TODO Auto-generated method stub
		
	}
	@Override
	public void mousePressed(MouseEvent arg0) {
		// TODO Auto-generated method stub
		
	}
	@Override
	public void mouseReleased(MouseEvent arg0) {
		// TODO Auto-generated method stub
		
	}
}

 

四.MouseEvent 确定鼠标坐标

MouseEvent  arg0这个参数可以得到鼠标的坐标。

arg0.getX()可以得到鼠标的横坐标。

arg0.getY()可以得到鼠标的纵坐标。

 

五.ImagelO显示图片的类

lmagelO类包含一些用来查找ImageReader 和ImageWriter 以及执行简单编码和解码的静态便捷方法。将硬盘中的图片导入到窗口中:通过ImageIO输入一个Bufferedlmage。

drawlmage()方法:将一个Bufferedlmage 对象绘制到窗口中。

setColor():设置颜色。

setFont():设置字体。

 

六.Graphics图形的绘制类

图形环境的概念同在GUI平台上开发应用程序紧密相关。虽然通常将窗口和组件本身作为对象来表达,但仍然需要另一个接口来进行实际的绘制、着色以及文本输出等操作。

Java 语言中提供这些功能的基类称做java.awt.Graphics。从java.awt.Component类(所有窗口对象的基类)继承的类提供了一个名为paint() 的方法,在需要重新绘制组件时,调用该方法。
paint()方法只有一个参数,该参数是Graphics 类的实例。

drawString():绘制字符串。
drawOval():绘制一个空心的圆形。
fillOval():绘制一个实心的圆形。
drawLine():绘制一条线。
drawRect():绘制一个空心的矩形。
fillRect():绘制一个实心的矩形。
drawlmage():绘制一个已经存在的图片,将一个图片直接显示到窗体中。
setColor():设置画笔的颜色。
setFont():设置绘制文字的字体。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值