java实践(八)——继承

一、实践目的:

        了解继承的基本概念;

        掌握父类与子类的关系与应用。

二、实践内容:

题目1.按要求设计程序:

1.定义一个五子棋的棋盘。五子棋棋盘含有宽w,高h,行数r,列数c和边距align,网格为正方形宽和高都为size,画棋盘的方法public void paint(Griphics g)。

2.定义一个中国象棋的棋盘。象棋棋盘含有与五子棋相同的属性,画棋盘的方法名称相同,但算法不同。

3.根据以上说明设计父类RenjuBoard,和子类ChineseChessBoard。

 五子棋棋盘  示例代码:

import java.awt.Graphics;
import javax.swing.JLabel;
import javax.swing.JPanel;


public class RenjuBoard extends JPanel {
	int w,h;//宽和高,用像素为单位。
	int c,r;//列和行,列的线条和行的线条数用正整数表示。
	int align;//边距
	int size; //网格间距
	
	public JLabel l=new Piece();
	/*
	 * 无参构造函数
	 */
	public RenjuBoard(){
		this(0,0,0,0);
	}
	
	/*
	 * 有宽、高、列和行的构造函数
	 */
	public RenjuBoard(int w,int h,int c,int r){
		this.w = w;
		this.h = h;
		this.c = c;
		this.r = r;
	}
	
	/*
	 * 只有行和列数的构造函数
	 */
	public RenjuBoard(int c,int r){
		this(0,0,0,0);
		this.r = r;
		this.c = c;
	}
	
	/*
	 * 画棋盘(non-Javadoc)
	 * @see javax.swing.JComponent#paint(java.awt.Graphics)
	 */
	public void paint(Graphics g){
		align = 20;
		size = (w - 2 * align )/(c - 1);
		
		for(int i=0; i<r; i++) //画横线
			g.drawLine(0+align, i * size + align, align+(c-1)*size, i * size + align);
		
		for(int j=0; j<c; j++) //画纵线
			g.drawLine(align + j*size, align, align + j*size, align + (r-1)*size);
		
	}
}


 

题目2.

1.设计一个抽象类Board,设计两个子类五子棋类和中国象棋类。

2.主窗体通过菜单选择,可以在窗体内实现对应棋盘。

 五子棋如图1所示

图1  五子棋

 

图2  中国象棋

参考代码:

抽象类Board

import java.awt.Graphics;
import javax.swing.JPanel;
public abstract class Board extends JPanel {

	int w,h;//宽和高,用像素为单位。
	int c,r;//列和行,列的线条和行的线条数用正整数表示。
	int align;//边距
	int size; //网格间距

	public abstract void paint(Graphics g);//
}


 

 

五子棋:

import java.awt.Graphics;

import javax.swing.JLabel;
import javax.swing.JPanel;


public class RenjuBoard extends Board {
	/*
	 * 无参构造函数
	 */
	public RenjuBoard(){
		this(0,0,0,0);
	}
	
	/*
	 * 有宽、高、列和行的构造函数
	 */
	public RenjuBoard(int w,int h,int c,int r){
		this.w = w;
		this.h = h;
		this.c = c;
		this.r = r;
	}
	
	/*
	 * 只有行和列数的构造函数
	 */
	public RenjuBoard(int c,int r){
		this(0,0,0,0);
		this.r = r;
		this.c = c;
	}
	
	/*
	 * 画棋盘(non-Javadoc)
	 * @see javax.swing.JComponent#paint(java.awt.Graphics)
	 */
	public void paint(Graphics g){
		align = 20;
		size = (w - 2 * align )/(c - 1);
		
		for(int i=0; i<r; i++) //画横线
			g.drawLine(0+align, i * size + align, align+(c-1)*size, i * size + align);
		
		for(int j=0; j<c; j++) //画纵线
			g.drawLine(align + j*size, align, align + j*size, align + (r-1)*size);
		
	}
}


象棋

import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;


public class ChineseChess extends Board {
	/*
	 * 无参构造函数
	 */
	public ChineseChess(){
		this(0,0,0,0);
	}
	
	/*
	 * 有宽、高、列和行的构造函数
	 */
	public ChineseChess(int w,int h,int c,int r){
		this.w = w;
		this.h = h;
		this.c = c;
		this.r = r;
	}
	
	/*
	 * 只有行和列数的构造函数
	 */
	public ChineseChess(int c,int r){
		this(0,0,0,0);
		this.r = r;
		this.c = c;
	}
	
	/*
	 * 画棋盘(non-Javadoc)
	 * @see javax.swing.JComponent#paint(java.awt.Graphics)
	 */
	public void paint(Graphics g){
		align = 20;
		size = (w - 2 * align )/(r - 1);
		
		//画横线
		for(int i=0; i<r; i++) 
			g.drawLine(0+align, i * size + align, align+(c-1)*size, i * size + align);
		
		//画纵线		
		for (int i = 0; i < c; i++){
			g.drawLine(align + i * size, align, align + i
					* size, align + (r -6) * size);
			
			g.drawLine(align + i * size, align + (r-5) * size, align + i
					* size, align + (r-1) * size);
		}
		//画斜线
		g.drawLine(align + size * 3,align, align+size *5, align + size*2 );
		g.drawLine(align + size * 5,align, align+size *3, align + size*2 );
				
		g.drawLine(align + size * 3,align + size*(r-3), align+size *5, align + size*(r-1) );
		g.drawLine(align + size * 5,align + size*(r-3), align+size *3, align + size*(r-1) );
		
		// 画四周边线(粗线)
		float lineWidth = 3.0f;
		g.setColor(Color.black);
		((Graphics2D) g).setStroke(new BasicStroke(lineWidth));
		((Graphics2D) g).drawLine(align, align, size * (c - 1)
					+ align, align);
		
		((Graphics2D) g).drawLine(align, size * (r-1) + align,
					size * (c - 1) + align, (r-1) * size
					+ align);
		((Graphics2D) g).drawLine(align, align, align, (r-1)
					* size + align);
		((Graphics2D) g).drawLine(align + size * (c - 1), align,
					align + size * (c - 1), (r-1) * size
					+ align);
		
		//画炮位
		g.drawLine(align + size-(size*2/7), align + size*2-(size*1/7), align + size-(size*1/7), align + size*2-(size*1/7));
		g.drawLine(align + size-(size*1/7), align + size*2-(size*2/7), align + size-(size*1/7), align + size*2-(size*1/7));
		g.drawLine(align + size-(size*2/7), align + size*2+(size*1/7), align + size-(size*1/7), align + size*2+(size*1/7));
		g.drawLine(align + size-(size*1/7), align + size*2+(size*2/7), align + size-(size*1/7), align + size*2+(size*1/7));
		g.drawLine(align + size+(size*2/7), align + size*2-(size*1/7), align + size+(size*1/7), align + size*2-(size*1/7));
		g.drawLine(align + size+(size*1/7), align + size*2-(size*2/7), align + size+(size*1/7), align + size*2-(size*1/7));
		g.drawLine(align + size+(size*2/7), align + size*2+(size*1/7), align + size+(size*1/7), align + size*2+(size*1/7));
		g.drawLine(align + size+(size*1/7), align + size*2+(size*2/7), align + size+(size*1/7), align + size*2+(size*1/7));
				
		g.drawLine(align + size*7-(size*2/7), align + size*2-(size*1/7), align + size*7-(size*1/7), align + size*2-(size*1/7));
		g.drawLine(align + size*7-(size*1/7), align + size*2-(size*2/7), align + size*7-(size*1/7), align + size*2-(size*1/7));
		g.drawLine(align + size*7-(size*2/7), align + size*2+(size*1/7), align + size*7-(size*1/7), align + size*2+(size*1/7));
		g.drawLine(align + size*7-(size*1/7), align + size*2+(size*2/7), align + size*7-(size*1/7), align + size*2+(size*1/7));
		g.drawLine(align + size*7+(size*2/7), align + size*2-(size*1/7), align + size*7+(size*1/7), align + size*2-(size*1/7));
		g.drawLine(align + size*7+(size*1/7), align + size*2-(size*2/7), align + size*7+(size*1/7), align + size*2-(size*1/7));
		g.drawLine(align + size*7+(size*2/7), align + size*2+(size*1/7), align + size*7+(size*1/7), align + size*2+(size*1/7));
		g.drawLine(align + size*7+(size*1/7), align + size*2+(size*2/7), align + size*7+(size*1/7), align + size*2+(size*1/7));
			
		g.drawLine(align + size-(size*2/7), align + size*7-(size*1/7), align + size-(size*1/7), align + size*7-(size*1/7));
		g.drawLine(align + size-(size*1/7), align + size*7-(size*2/7), align + size-(size*1/7), align + size*7-(size*1/7));
		g.drawLine(align + size-(size*2/7), align + size*7+(size*1/7), align + size-(size*1/7), align + size*7+(size*1/7));
		g.drawLine(align + size-(size*1/7), align + size*7+(size*2/7), align + size-(size*1/7), align + size*7+(size*1/7));
		g.drawLine(align + size+(size*2/7), align + size*7-(size*1/7), align + size+(size*1/7), align + size*7-(size*1/7));
		g.drawLine(align + size+(size*1/7), align + size*7-(size*2/7), align + size+(size*1/7), align + size*7-(size*1/7));
		g.drawLine(align + size+(size*2/7), align + size*7+(size*1/7), align + size+(size*1/7), align + size*7+(size*1/7));
		g.drawLine(align + size+(size*1/7), align + size*7+(size*2/7), align + size+(size*1/7), align + size*7+(size*1/7));
				
		g.drawLine(align + size*7-(size*2/7), align + size*7-(size*1/7), align + size*7-(size*1/7), align + size*7-(size*1/7));
		g.drawLine(align + size*7-(size*1/7), align + size*7-(size*2/7), align + size*7-(size*1/7), align + size*7-(size*1/7));
		g.drawLine(align + size*7-(size*2/7), align + size*7+(size*1/7), align + size*7-(size*1/7), align + size*7+(size*1/7));
		g.drawLine(align + size*7-(size*1/7), align + size*7+(size*2/7), align + size*7-(size*1/7), align + size*7+(size*1/7));
		g.drawLine(align + size*7+(size*2/7), align + size*7-(size*1/7), align + size*7+(size*1/7), align + size*7-(size*1/7));
		g.drawLine(align + size*7+(size*1/7), align + size*7-(size*2/7), align + size*7+(size*1/7), align + size*7-(size*1/7));
		g.drawLine(align + size*7+(size*2/7), align + size*7+(size*1/7), align + size*7+(size*1/7), align + size*7+(size*1/7));
		g.drawLine(align + size*7+(size*1/7), align + size*7+(size*2/7), align + size*7+(size*1/7), align + size*7+(size*1/7));
				
		//画卒、兵位
		g.drawLine(align + size*0+(size*2/7), align + size*3-(size*1/7), align + size*0+(size*1/7), align + size*3-(size*1/7));
		g.drawLine(align + size*0+(size*1/7), align + size*3-(size*2/7), align + size*0+(size*1/7), align + size*3-(size*1/7));
		g.drawLine(align + size*0+(size*2/7), align + size*3+(size*1/7), align + size*0+(size*1/7), align + size*3+(size*1/7));
		g.drawLine(align + size*0+(size*1/7), align + size*3+(size*2/7), align + size*0+(size*1/7), align + size*3+(size*1/7));
					
		g.drawLine(align + size*2-(size*2/7), align + size*3-(size*1/7), align + size*2-(size*1/7), align + size*3-(size*1/7));
		g.drawLine(align + size*2-(size*1/7), align + size*3-(size*2/7), align + size*2-(size*1/7), align + size*3-(size*1/7));
		g.drawLine(align + size*2-(size*2/7), align + size*3+(size*1/7), align + size*2-(size*1/7), align + size*3+(size*1/7));
		g.drawLine(align + size*2-(size*1/7), align + size*3+(size*2/7), align + size*2-(size*1/7), align + size*3+(size*1/7));
		g.drawLine(align + size*2+(size*2/7), align + size*3-(size*1/7), align + size*2+(size*1/7), align + size*3-(size*1/7));
		g.drawLine(align + size*2+(size*1/7), align + size*3-(size*2/7), align + size*2+(size*1/7), align + size*3-(size*1/7));
		g.drawLine(align + size*2+(size*2/7), align + size*3+(size*1/7), align + size*2+(size*1/7), align + size*3+(size*1/7));
		g.drawLine(align + size*2+(size*1/7), align + size*3+(size*2/7), align + size*2+(size*1/7), align + size*3+(size*1/7));
				
		g.drawLine(align + size*4-(size*2/7), align + size*3-(size*1/7), align + size*4-(size*1/7), align + size*3-(size*1/7));
		g.drawLine(align + size*4-(size*1/7), align + size*3-(size*2/7), align + size*4-(size*1/7), align + size*3-(size*1/7));
		g.drawLine(align + size*4-(size*2/7), align + size*3+(size*1/7), align + size*4-(size*1/7), align + size*3+(size*1/7));
		g.drawLine(align + size*4-(size*1/7), align + size*3+(size*2/7), align + size*4-(size*1/7), align + size*3+(size*1/7));
		g.drawLine(align + size*4+(size*2/7), align + size*3-(size*1/7), align + size*4+(size*1/7), align + size*3-(size*1/7));
		g.drawLine(align + size*4+(size*1/7), align + size*3-(size*2/7), align + size*4+(size*1/7), align + size*3-(size*1/7));
		g.drawLine(align + size*4+(size*2/7), align + size*3+(size*1/7), align + size*4+(size*1/7), align + size*3+(size*1/7));
		g.drawLine(align + size*4+(size*1/7), align + size*3+(size*2/7), align + size*4+(size*1/7), align + size*3+(size*1/7));
				
		g.drawLine(align + size*6-(size*2/7), align + size*3-(size*1/7), align + size*6-(size*1/7), align + size*3-(size*1/7));
		g.drawLine(align + size*6-(size*1/7), align + size*3-(size*2/7), align + size*6-(size*1/7), align + size*3-(size*1/7));
		g.drawLine(align + size*6-(size*2/7), align + size*3+(size*1/7), align + size*6-(size*1/7), align + size*3+(size*1/7));
		g.drawLine(align + size*6-(size*1/7), align + size*3+(size*2/7), align + size*6-(size*1/7), align + size*3+(size*1/7));
		g.drawLine(align + size*6+(size*2/7), align + size*3-(size*1/7), align + size*6+(size*1/7), align + size*3-(size*1/7));
		g.drawLine(align + size*6+(size*1/7), align + size*3-(size*2/7), align + size*6+(size*1/7), align + size*3-(size*1/7));
		g.drawLine(align + size*6+(size*2/7), align + size*3+(size*1/7), align + size*6+(size*1/7), align + size*3+(size*1/7));
		g.drawLine(align + size*6+(size*1/7), align + size*3+(size*2/7), align + size*6+(size*1/7), align + size*3+(size*1/7));
			
		g.drawLine(align + size*8-(size*2/7), align + size*3-(size*1/7), align + size*8-(size*1/7), align + size*3-(size*1/7));
		g.drawLine(align + size*8-(size*1/7), align + size*3-(size*2/7), align + size*8-(size*1/7), align + size*3-(size*1/7));
		g.drawLine(align + size*8-(size*2/7), align + size*3+(size*1/7), align + size*8-(size*1/7), align + size*3+(size*1/7));
		g.drawLine(align + size*8-(size*1/7), align + size*3+(size*2/7), align + size*8-(size*1/7), align + size*3+(size*1/7));
			
		//     ------- --------------------下面兵位--------------------------------------
		g.drawLine(align + size*0+(size*2/7), align + size*6-(size*1/7), align + size*0+(size*1/7), align + size*6-(size*1/7));
		g.drawLine(align + size*0+(size*1/7), align + size*6-(size*2/7), align + size*0+(size*1/7), align + size*6-(size*1/7));
		g.drawLine(align + size*0+(size*2/7), align + size*6+(size*1/7), align + size*0+(size*1/7), align + size*6+(size*1/7));
		g.drawLine(align + size*0+(size*1/7), align + size*6+(size*2/7), align + size*0+(size*1/7), align + size*6+(size*1/7));
			
		g.drawLine(align + size*2-(size*2/7), align + size*6-(size*1/7), align + size*2-(size*1/7), align + size*6-(size*1/7));
		g.drawLine(align + size*2-(size*1/7), align + size*6-(size*2/7), align + size*2-(size*1/7), align + size*6-(size*1/7));
		g.drawLine(align + size*2-(size*2/7), align + size*6+(size*1/7), align + size*2-(size*1/7), align + size*6+(size*1/7));
		g.drawLine(align + size*2-(size*1/7), align + size*6+(size*2/7), align + size*2-(size*1/7), align + size*6+(size*1/7));
		g.drawLine(align + size*2+(size*2/7), align + size*6-(size*1/7), align + size*2+(size*1/7), align + size*6-(size*1/7));
		g.drawLine(align + size*2+(size*1/7), align + size*6-(size*2/7), align + size*2+(size*1/7), align + size*6-(size*1/7));
		g.drawLine(align + size*2+(size*2/7), align + size*6+(size*1/7), align + size*2+(size*1/7), align + size*6+(size*1/7));
		g.drawLine(align + size*2+(size*1/7), align + size*6+(size*2/7), align + size*2+(size*1/7), align + size*6+(size*1/7));
				
		g.drawLine(align + size*4-(size*2/7), align + size*6-(size*1/7), align + size*4-(size*1/7), align + size*6-(size*1/7));
		g.drawLine(align + size*4-(size*1/7), align + size*6-(size*2/7), align + size*4-(size*1/7), align + size*6-(size*1/7));
		g.drawLine(align + size*4-(size*2/7), align + size*6+(size*1/7), align + size*4-(size*1/7), align + size*6+(size*1/7));
		g.drawLine(align + size*4-(size*1/7), align + size*6+(size*2/7), align + size*4-(size*1/7), align + size*6+(size*1/7));
		g.drawLine(align + size*4+(size*2/7), align + size*6-(size*1/7), align + size*4+(size*1/7), align + size*6-(size*1/7));
		g.drawLine(align + size*4+(size*1/7), align + size*6-(size*2/7), align + size*4+(size*1/7), align + size*6-(size*1/7));
		g.drawLine(align + size*4+(size*2/7), align + size*6+(size*1/7), align + size*4+(size*1/7), align + size*6+(size*1/7));
		g.drawLine(align + size*4+(size*1/7), align + size*6+(size*2/7), align + size*4+(size*1/7), align + size*6+(size*1/7));
		
		g.drawLine(align + size*6-(size*2/7), align + size*6-(size*1/7), align + size*6-(size*1/7), align + size*6-(size*1/7));
		g.drawLine(align + size*6-(size*1/7), align + size*6-(size*2/7), align + size*6-(size*1/7), align + size*6-(size*1/7));
		g.drawLine(align + size*6-(size*2/7), align + size*6+(size*1/7), align + size*6-(size*1/7), align + size*6+(size*1/7));
		g.drawLine(align + size*6-(size*1/7), align + size*6+(size*2/7), align + size*6-(size*1/7), align + size*6+(size*1/7));
		g.drawLine(align + size*6+(size*2/7), align + size*6-(size*1/7), align + size*6+(size*1/7), align + size*6-(size*1/7));
		g.drawLine(align + size*6+(size*1/7), align + size*6-(size*2/7), align + size*6+(size*1/7), align + size*6-(size*1/7));
		g.drawLine(align + size*6+(size*2/7), align + size*6+(size*1/7), align + size*6+(size*1/7), align + size*6+(size*1/7));
		g.drawLine(align + size*6+(size*1/7), align + size*6+(size*2/7), align + size*6+(size*1/7), align + size*6+(size*1/7));
				
		g.drawLine(align + size*8-(size*2/7), align + size*6-(size*1/7), align + size*8-(size*1/7), align + size*6-(size*1/7));
		g.drawLine(align + size*8-(size*1/7), align + size*6-(size*2/7), align + size*8-(size*1/7), align + size*6-(size*1/7));
		g.drawLine(align + size*8-(size*2/7), align + size*6+(size*1/7), align + size*8-(size*1/7), align + size*6+(size*1/7));
		g.drawLine(align + size*8-(size*1/7), align + size*6+(size*2/7), align + size*8-(size*1/7), align + size*6+(size*1/7));
		
		//书写“楚河汉界”
		Font font=new Font("楷体",Font.BOLD|Font.ITALIC,34);
		g.setColor(new Color(137,16,10));
		g.setFont(font);
		g.drawString("楚", align + size*1, align+size*4+size*3/4);
		g.drawString("河", align + size*2, align+size*4+size*3/4);
		
		g.drawString("汉", align + size*5+size/2, align+size*4+size*3/4);
		g.drawString("界", align + size*6+size/2, align+size*4+size*3/4);
	}
}


 

转载于:https://www.cnblogs.com/cnlht/archive/2012/10/09/9495705.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值