当前位置: 首页 > news >正文

Java高级Day26-绘制坦克大战

82.坦克大战

绘图入门和机制:
//在面板上画圆
public class HelloJava extends JFrame {//JFrame对应窗口,即画框
​//定义一个面便private MyPanel mp = null;public static void main(String[] args) {new HelloJava();}public HelloJava(){//初始化面板mp = new MyPanel();//把面板放入大奥窗口(画框)this.add(mp);//设置窗口大小this.setSize(400,300);//点击窗口的X,程序关闭this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(true);}
}
​
//1.先定义一个MyPanel()面便
class MyPanel extends JPanel{
​//1.MyPanel 对象就是一个画板//2.Graphics g 把 g 理解成一支画笔//3.Graphics 提供了很多绘图的方法@Overridepublic void paint(Graphics g) {//绘图方法super.paint(g);//调用父类的方法完成初始化//画出一个圆形g.drawOval(10,10,100,100);}
}

绘图原理:

Component类提供了两个和绘图相关最重要的方法:

  1. paint(Graphics g)绘制组件的哇爱管

  2. repaint()刷新组件的外观

当组件第一次在屏幕显示的时候,程序会自动的调用paint()方法,以下情况会被调用

  1. 窗口最小化,再最大化

  2. 窗口的大小发生变化

  3. repaint函数被调用

Graphics类

  1. 画直线 drawLine(int x1,int y1,int x2,int y2)

  2. 画矩形边框 drawRect(int x,int y,int width,int height)

  3. 画椭圆边框 drawOval(int x,int y,int width,int height)

  4. 填充矩形 fillRect(int x,int y,int width,int height)

  5. 填充椭圆 fillOval(int x,int y,int width,int height)

  6. 画图片 drawImage(Image img,int x,int y)

  7. 画字符串 drawString(String str,int x,int y,..)

  8. 设置笔画的字体 setFont(Font font)

  9. 设置笔画的颜色 setColor(Color c)

绘制坦克:

//绘制面板
public class MyPanel extends JPanel {//定义我的坦克MyTank mytank = null;public MyPanel(){mytank = new MyTank(100,100);//初始化自己的坦克}
​@Overridepublic void paint(Graphics g) {super.paint(g);g.fillRect(0,0,1000,750);//填充矩形,默认黑丝}
}
​
//坦克类
public class Tank {private int x;//坦克的横坐标private int y;//坦克的纵坐标
​public Tank(int x,int y){this.x = x;this.y = 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 class MyTank extends Tank{public MyTank(int x, int y) {super(x, y);}
}
​
//绘制界面
public class TankGame extends JFrame {//定义MyPanelMyPanel mp = null;public static void main(String[] args) {TankGame tankGame = new TankGame();}public TankGame(){mp = new MyPanel();this.add(mp);this.setSize(1000,750);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(true);}
}

绘出坦克:

//编写方法,画出坦克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,20,false);//画出坦克身子g.fillOval(x + 10, y + 20, 20,20);//画出坦克圆盖g.drawLine(x + 20, y + 30, x +20,y);//画出坦克炮筒break;default:System.out.println("暂时没有处理");}}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • stm32入门学习13-时钟RTC
  • Ubuntu基础使用
  • Kylin系列(一)入门
  • 模板中class与typename的辨析
  • Chainlit快速实现AI对话应用并将聊天数据的AWS S3 和 Azure Blob云服务中
  • Android Studio本地加速安装gradle
  • DrawState与wms绘制流程梳理
  • RabbitMQ延迟队列
  • H5 优化手段
  • 《新一代数据可视化分析工具应用指南》正式开放下载
  • go语言创建协程
  • 4章7节:用R做数据重塑,行列命名和数据类型转换
  • 【IT行业研究报告】Internet Technology
  • Android网络库:Volley、Retrofit和OkHttp的比较与应用
  • ARM/Linux嵌入式面经(二一):诺瓦科技
  • (三)从jvm层面了解线程的启动和停止
  • 《Java8实战》-第四章读书笔记(引入流Stream)
  • classpath对获取配置文件的影响
  • Java 实战开发之spring、logback配置及chrome开发神器(六)
  • JavaScript 基础知识 - 入门篇(一)
  • PHP CLI应用的调试原理
  • Spring Cloud Alibaba迁移指南(一):一行代码从 Hystrix 迁移到 Sentinel
  • supervisor 永不挂掉的进程 安装以及使用
  • 笨办法学C 练习34:动态数组
  • 纯 javascript 半自动式下滑一定高度,导航栏固定
  • 动手做个聊天室,前端工程师百无聊赖的人生
  • 分布式任务队列Celery
  • 海量大数据大屏分析展示一步到位:DataWorks数据服务+MaxCompute Lightning对接DataV最佳实践...
  • 互联网大裁员:Java程序员失工作,焉知不能进ali?
  • 正则与JS中的正则
  • media数据库操作,可以进行增删改查,实现回收站,隐私照片功能 SharedPreferences存储地址:
  • ionic入门之数据绑定显示-1
  • Python 之网络式编程
  • Spring第一个helloWorld
  • 你学不懂C语言,是因为不懂编写C程序的7个步骤 ...
  • ​ 全球云科技基础设施:亚马逊云科技的海外服务器网络如何演进
  • ​ssh-keyscan命令--Linux命令应用大词典729个命令解读
  • ###C语言程序设计-----C语言学习(3)#
  • #{} 和 ${}区别
  • #常见电池型号介绍 常见电池尺寸是多少【详解】
  • $分析了六十多年间100万字的政府工作报告,我看到了这样的变迁
  • (1)(1.13) SiK无线电高级配置(五)
  • (java)关于Thread的挂起和恢复
  • (solr系列:一)使用tomcat部署solr服务
  • (SpringBoot)第二章:Spring创建和使用
  • (分布式缓存)Redis哨兵
  • (论文阅读11/100)Fast R-CNN
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理第3章 信息系统治理(一)
  • (提供数据集下载)基于大语言模型LangChain与ChatGLM3-6B本地知识库调优:数据集优化、参数调整、Prompt提示词优化实战
  • **PyTorch月学习计划 - 第一周;第6-7天: 自动梯度(Autograd)**
  • *p++,*(p++),*++p,(*p)++区别?
  • *setTimeout实现text输入在用户停顿时才调用事件!*
  • .cn根服务器被攻击之后
  • .NET/C# 使窗口永不获得焦点
  • .net6 当连接用户的shell断掉后,dotnet会自动关闭,达不到长期运行的效果。.NET 进程守护