Java实践(十一)——五子棋

一、实践目标:

       1.掌握JavaGUI界面设计

       2.掌握鼠标事件的监听(MouseListener,MouseMotionListener)

二、实践内容:

      设计一个简单的五子棋程序,能够实现五子棋下棋过程。如下图所示

 

五子棋运行界面

      1.五子棋棋盘类

package cn.edu.ouc.fiveChess;

import java.awt.Color;
import java.awt.Cursor;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.RadialGradientPaint;
import java.awt.RenderingHints;
import java.awt.Toolkit;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.awt.geom.Ellipse2D;

import javax.swing.*;
/**
 * 五子棋--棋盘类 
 */

public class ChessBoard extends JPanel implements MouseListener {
   public static final int MARGIN=30;//边距
   public static final int GRID_SPAN=35;//网格间距
   public static final int ROWS=15;//棋盘行数
   public static final int COLS=15;//棋盘列数
   
   Point[] chessList=new Point[(ROWS+1)*(COLS+1)];//初始每个数组元素为null
   boolean isBlack=true;//默认开始是黑棋先
   boolean gameOver=false;//游戏是否结束
   int chessCount;//当前棋盘棋子的个数
   int xIndex,yIndex;//当前刚下棋子的索引
   
   Image img;
   Image shadows;
   Color colortemp;
   public ChessBoard(){
	  
	  // setBackground(Color.blue);//设置背景色为橘黄色
	   img=Toolkit.getDefaultToolkit().getImage("board.jpg");
	   shadows=Toolkit.getDefaultToolkit().getImage("shadows.jpg");
	   addMouseListener(this);
	   addMouseMotionListener(new MouseMotionListener(){
		   public void mouseDragged(MouseEvent e){
			   
		   }
		   
		   public void mouseMoved(MouseEvent e){
		     int x1=(e.getX()-MARGIN+GRID_SPAN/2)/GRID_SPAN;
		     //将鼠标点击的坐标位置转成网格索引
		     int y1=(e.getY()-MARGIN+GRID_SPAN/2)/GRID_SPAN;
		     //游戏已经结束不能下
		     //落在棋盘外不能下
		     //x,y位置已经有棋子存在,不能下
		     if(x1<0||x1>ROWS||y1<0||y1>COLS||gameOver||findChess(x1,y1))
		    	 setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
		     //设置成默认状态
		     else setCursor(new Cursor(Cursor.HAND_CURSOR));
		     
		   }
	   });
   } 
   
  

//绘制
   public void paintComponent(Graphics g){
	 
	   super.paintComponent(g);//画棋盘
	 
	   int imgWidth= img.getWidth(this);
	   int imgHeight=img.getHeight(this);//获得图片的宽度与高度
	   int FWidth=getWidth();
	   int FHeight=getHeight();//获得窗口的宽度与高度
	   int x=(FWidth-imgWidth)/2;
	   int y=(FHeight-imgHeight)/2;
	   g.drawImage(img, x, y, null);
	
	   
	   for(int i=0
  • 127
    点赞
  • 669
    收藏
    觉得还不错? 一键收藏
  • 108
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值