经典重庆网站,百度云网站建设教程视频,购买软件平台,清远 网站建设02. 坦克大战项目-准备工作和绘制坦克
01. 准备工作
1. 首先我们要创建四个类
1. Tank类
介绍#xff1a;Tank 类主要用来表示坦克的基本属性和行为
public class Tank {private int x;//坦克的横坐标private int y;//坦克的纵坐标public int getX() {return x;}public v…02. 坦克大战项目-准备工作和绘制坦克
01. 准备工作
1. 首先我们要创建四个类
1. Tank类
介绍Tank 类主要用来表示坦克的基本属性和行为
public class Tank {private int x;//坦克的横坐标private int y;//坦克的纵坐标public int getX() {return x;}public void setX(int x) {this.x x;}public int getY() {return y;}public void setY(int y) {this.y y;}public Tank(int x, int y) {this.x x;this.y y;}
}2. Hero类
介绍Hero 类 继承自 Tank 类表示游戏中的主角坦克。 通过 super(x, y) 调用父类构造方法初始化主角坦克的位置。
public class Hero extends Tank{public Hero(int x, int y) {super(x, y);}
}3. MyPanel类
介绍MyPanel类 继承自 JPanel用于绘制游戏的绘图区域。 包含一个名为 hero 的 Hero 对象表示游戏中的主角坦克。 在构造方法中初始化主角坦克的位置。 重写了 paint 方法用于绘制游戏区域。当前代码中只是填充了一个黑色矩形表示游戏区域。
import javax.swing.*;
import java.awt.*;public class MyPanel extends JPanel {//定义我的坦克Hero hero null;public MyPanel() {hero new Hero(100, 100);//初始化自己坦克}Overridepublic void paint(Graphics g) {super.paint(g);g.fillRect(0, 0, 1000, 750);//填充矩形默认黑色}
}4. YzjTankGame01类
介绍YzjTankGame01 类 继承自 JFrame表示游戏的主窗口。 包含一个名为 mp 的 MyPanel 对象用于绘制游戏的绘图区域。 在构造方法中初始化 MyPanel 对象并将其添加到主窗口中。设置了主窗口的大小、关闭操作并显示主窗口。
import javax.swing.*;public class YzjTankGame01 extends JFrame {//定义MyPanelMyPanel mp null;public static void main(String[] args) {YzjTankGame01 yzjTankGame01 new YzjTankGame01();}public YzjTankGame01() {mp new MyPanel();this.add(mp);//把面板就是游戏的绘图区域this.setSize(1000, 750);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(true);}
}02. 绘制坦克
1. 思路
对于坦克的绘制首先我们要有一个思路采用两个相同的矩形作为坦克侧面,一个矩形和一个圆和一条线作为坦克的主体
2.开始绘制
package com.yzjedu.tankgame;import javax.swing.*;
import java.awt.*;/*** 4.0 坦克大战的绘图区域**/
public class MyPanel extends JPanel {//定义我的坦克Hero hero null;public MyPanel() {hero new Hero(100, 100);//初始化自己坦克}Overridepublic void paint(Graphics g) {super.paint(g);g.fillRect(0, 0, 1000, 750);//填充矩形默认黑色//画出坦克-封装方法drawTank(hero.getX(), hero.getY(), g, 0, 0);}//编写方法画出坦克/**** param x 坦克的左上角x坐标* param y 坦克的左上角y坐标* param g 画笔* param direct 坦克方向上下左右* param type 坦克类型*/public void drawTank(int x, int y, Graphics g, int direct,int type) {switch (type) {case 0: //我们坦克g.setColor(Color.cyan);break;case 1: //敌人坦克g.setColor(Color.yellow);break;}//根据坦克的方向来绘制坦克switch (direct) {case 0: //表示向上g.fill3DRect(x, y, 10, 60, false);//画出坦克左边的轮子g.fill3DRect(x 30, y, 10, 60, false);//画出坦克右边的轮子g.fill3DRect(x 10, y 10, 20, 40, false);//画出坦克主体g.fillOval(x 10, y 20, 20,20);//画出坦克盖子g.drawLine(x 20, y 30, x 20, y);break;default:System.out.println(其他暂时不做处理);}}
}这样我们一个基础的坦克就完成了后续章节进入进一步的完善