其实就是通过自定义的panel  重写里面的paint方法  使用Graphics类画一个圆

然后把自定的panel添加到窗口中

由于想到tank不能只画一个  所以我们封装一个tank类  里面有一个draw方法 用来画 坦克

通过实例化tank  调用draw方法就能实现画tank了

具体代码如下:

Tank类

package tankWar;

import java.awt.BasicStroke;

import java.awt.Color;

import java.awt.Graphics;

import java.awt.Graphics2D;

import java.awt.geom.Ellipse2D;

import java.awt.geom.Line2D;

public class Tank {

//坦克x坐标

private int x;

//坦克y坐标

private int y;

//坦克的宽

private int width;

//坦克的高

private int height;

public Tank() {

super();

// TODO Auto-generated constructor stub

}

public Tank(int x, int y, int width, int height) {

super();

this.x = x;

this.y = y;

this.width = width;

this.height = height;

}

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 int getWidth() {

return width;

}

public void setWidth(int width) {

this.width = width;

}

public int getHeight() {

return height;

}

public void setHeight(int height) {

this.height = height;

}

public void draw(Graphics g){

Graphics2D g2=(Graphics2D) g;

//画一个圆

Ellipse2D e2=new Ellipse2D.Double(x, y, width, height);

//颜色为红色

g2.setColor(Color.RED);

//填充

g2.fill(e2);

//画一条线 通过坦克的坐标计算炮杆的坐标

//默认坦克朝上

Line2D l2=new Line2D.Double(x+width/2, y+height/2, x+width/2, y+height/2-40);

g2.setColor(Color.BLACK);

g2.setStroke(new BasicStroke(3));

g2.draw(l2);

}

}

TankClient类

package tankWar;

import java.awt.Color;

import java.awt.Graphics;

import java.awt.Graphics2D;

import java.awt.geom.Ellipse2D;

import java.awt.geom.Line2D;

import java.awt.geom.Rectangle2D;

import javax.swing.JFrame;

import javax.swing.JPanel;

public class TankClient extends JFrame{

//窗口的高度

public static int screenHeight=600;

//窗口的宽度

public static int screenWidth=800;

//创建一个窗口

public TankClient(){

//添加自定义的panel

add(new TankClientPanel());

setTitle("坦克大战");

//窗口的大小

setSize(screenWidth, screenHeight);

//设置窗口的显示位置在屏幕中央

setLocationRelativeTo(null);

//关闭窗口的事件管理

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

//不允许窗口的大小改动

setResizable(false);

setVisible(true);

}

public static void main(String[] args) {

//启动窗口

new TankClient();

}

//自定义Jpanel

public class TankClientPanel extends JPanel{

//重写patit方法

@Override

public void paint(Graphics g) {

//实例化坦克

Tank tank=new Tank(50,50,50,50);

//画坦克

tank.draw(g);

}

}

}

运行结果:

tankwar java_TankWar 单机(JAVA版) 版本0.3 画出坦克相关推荐

  1. java 坦克大战画坦克_【JAVA语言程序设计基础篇】--JAVA实现坦克大战游戏--画出坦克(二)...

    坦克类: //坦克父类 可以设置坦克出现位置(x,y) class Tank { int x = 0; int y = 0; public Tank (int x,int y){ this.x = x ...

  2. 如何从0开始画出一张优秀的架构图

    你好,我是悟空. 最近在画项目的技术架构图,找到了一些不错的模板,分享给大家~ 画图工具:ProcessOn. 画图技巧:如何从0开始画出一张优秀的架构图 文末再送 5 本书给大家! 业务架构图 定义 ...

  3. java 坦克重叠_【Java】我所知道坦克大战(单机版)之画出坦克的实心圆、让圆动起来、双缓冲解决闪烁问题...

    28640发布于 今天 02:47 本篇文章目的 画出坦克的实心圆 让坦克圆动起来 双缓冲解决闪烁问题 一.画出代表坦克的实心圆 我们需要画出一个圆,那么可以使用fillOval方法 fillOval ...

  4. 我的世界麦块的java_麦块游戏盒子App手机mod版下载-麦块盒子我的世界Java版v9.0.2 最新版-007游戏网...

    麦块盒子我的世界Java版,这是一款十分受欢迎的手游盒子,专为我的世界而打造.这里汇集了海量的游戏内容,游戏社区.游戏礼包.游戏攻略.游戏评测.游戏修改mod等等一应俱全,让你的游戏更加丰富,享体验到 ...

  5. 用Java输出兔子图形,如何画出可爱的兔子?那你看看这个!

    兔子怎么画?虽然想画一个心爱的兔子,兔子,从心爱的表面来看,是很有人气的动物,可是可能有些人对于动物的身体不太清楚.想画一个心爱的兔子的人也不在少数.那么这次我们就来一同看看一只心爱的兔子是怎么诞生的 ...

  6. java月亮升起与落下动画设计_Java版1.0.0/开发版本

    本页面列出了Java版1.0.0的开发版本. Beta 1.9-pre1 Beta 1.9 Prerelease是Java版1.0.0的首个预发布版. 它被称为"丢失的更新", 新 ...

  7. java版坦克大战_JAVA实现坦克大战1.0版本

    1 packagetankGame;2 import java.awt.*;3 import javax.swing.*;4 import java.awt.event.*;5 import java ...

  8. java画球_我的世界java版指令画球教程

    我的世界java版如何用指令画球?许多玩家可能还不太清楚吧,下面就为大家带来最新版本下指令画球的详细教程,供各位玩家们参考. 指令画球教程 第一丶 局部坐标 世界坐标被视作绝对坐标.很多命令可以使用波 ...

  9. java版我的世界有溺尸_我的世界溺尸怎么生成

    溺尸是海洋版本中的全新海底敌对生物,它会生成在所有的海洋生物群系中,属于僵尸的变种,普通的僵尸在水中超过半分钟就会转化成溺尸.溺尸也是全新武器三叉戟的唯一来源,携带三叉戟生成的溺尸会使用三叉戟的近战和 ...

最新文章

  1. python主成分分析相关系数_python如何进行主成分分析
  2. 自然语言对话:未来发展的机遇在哪里?
  3. c语言如何实现阶乘,求10000的阶乘(c语言代码实现)
  4. mysql最多多少个索引_漫画 | 一台Linux服务器最多能支撑多少个TCP连接?
  5. poj3421 X-factor Chains
  6. 为什么会有那么多人放弃编程?
  7. 需求文档:没有标准,只有沟通
  8. 用反射方法使用户控件动态调用父页面的方法
  9. 【机房收费系统】---上下机
  10. 做食品检测1年,自学软件测试,最后心惊胆战转行
  11. 脚本——web_custom_request函数详解
  12. scrapy操作指南
  13. wordpress上传图片按时间重命名
  14. flv 视频 文件 下载
  15. 我对国内两大购书站点的感受(dearbook和china-pub)
  16. 揭秘让您正确识别和处理恶意邮件的五种方法
  17. 8款精致的纯CSS3按钮特效
  18. 使用 Spring Boot websocket 写简单网页聊天室
  19. Java 随机点名器
  20. MFC中使用sqlite3操作数据库 创建,插入数据,查询数据

热门文章

  1. ASP.NET Core 中的依赖注入
  2. Microsoft Build 2018 直播来啦!
  3. ABP从入门到精通(5):.扩展国际化语言资源
  4. 从头编写 asp.net core 2.0 web api 基础框架 (1)
  5. Orleans例子再进一步
  6. 2016.NET Core相关内容回顾
  7. 【送书活动】机器学习项目开发实战
  8. java jtable defaulttablemodel_java – JTable和DefaultTableModel
  9. python 读取json为list及向json文件追加数据
  10. 【经典回放】多种语言系列数据结构线性表之一:顺序表