java 跟软帝-攀哥学做编程 飞机大战1

package ui;

import javax.swing.;
import java.awt.
;

/**

  • 游戏的窗体 :窗体的固定模式
  • java中的窗体类:JFrame
  • 自定义窗体步骤:
  •  1:写一个类,继承JFrame                                                       
    
  •  2:写一个构造方法,初始化窗体的属性;属性对应特点,方法对应行为                                      
    

*/
public class GameFrame extends JFrame{
//构造方法:方法名和类名一样
//构造方法的作用: 新的一年模具,给对象定型
public GameFrame() {
//设置标题 setTitle继承了 JFrame 所以不会报错
setTitle(“全民飞机大战”);
//设置大小 :宽和高 (512 768 )位置居中数据
setSize(512,700); //768相对于我的电脑界面太长,出界了.
//设置位置居中显示 null表示相对于屏幕左上角居中
setLocationRelativeTo(null);
//设置不允许玩家改变界面的大小
setResizable(false);
//设置默认的关闭选项 即关闭窗口就退出程序
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}                                                                         
 //程序入口                                                                   
public static void main(String[] args) {                                  
     //创建对象                                                               
    // GameFrame类 ;   frame对象名即对象的引用;   new GameFrame()对象                 
    GameFrame frame = new GameFrame();                                    
    //创建面板的对象,调用面板的构造方法 ,制作面板                                             
    GamePanel panel = new GamePanel();                                    
    //将面板加入窗体中  add增加                                                     
    frame.add(panel);                                                     
    //显示窗体  true 表示显示 false 表示隐藏                                                                                                                                                                                          
    frame.setVisible(true);                                                                                                                         
}                                                                         

}

package ui;

import javax.swing.;
import java.awt.
;
import java.awt.font.ImageGraphicAttribute;
import java.awt.image.BufferedImage;

/**

  • java中的游戏面板:JPanel
  • 自定义游戏面板
  • 1:写一个类,继承JPanel
  • 2:写一个构造方法,初始化(确定)面板的属性
  • 画图的步骤:
  •  1:在类中定义图片,并取名
    
  •  2:在构造方法中,调用工具初始化图片
    
  •  3:在画图方法path中,画图片
    

*/
public class GamePanel extends JPanel{
//定义背景图,1:取名
BufferedImage bg;//背景图

//构造方法:确定面板的特点
 public GamePanel(){
    //设置背景
     setBackground(Color.green);
     //初始化图片
     bg = App.getImg("/img/bg2.jpg");
 }
//专用画图方法:paint方法的写法,先打paint出来,然后在按键盘alt+回车
//Graphics g 画笔;
@Override
public void paint(Graphics g) {
    super.paint(g);
    //画图片格式
    //g.drawImage(图片,图片的横坐标,图片的纵坐标,null);
    g.drawImage(bg,0,0,null);
}

}

package ui;

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.IOException;

/**

  • 处理图片的工具类;
  •  工具类的写法;工具类中一般会将项目中需要重复使用的代码抽离出来,定义成工具方法
    
  •  工具类的方法:一般需要加static,加static的目的.
    
  •  static特点:1:公用的,所有对象都共用这一份
    
  •            2:static修饰不依赖对象,可以直接通过类名调用
    

*/
public class App {
//读取指定位置上的图片
//path路径,指代所有图片;BufferedImage图像缓冲区,java中用来表示图片的类; getImg获得图片
public static BufferedImage getImg(String path){
//java中的IO流,输送数据的管道
//App.class找到App类的路径,etResource()获取资源
//写完会报错: 报错处理,idea是alt+回车,选surround…
//try的意思是尝试
try {
BufferedImage img = ImageIO.read(App.class.getResource(path));
//如果找到图片,就将图片返回
return img;
//catch是抓
} catch (IOException e) {
//如果找不到图片 ,就会捕获找不到的原因
e.printStackTrace();
}
return null;
}
}

发布了174 篇原创文章 · 获赞 7 · 访问量 8410

猜你喜欢

转载自blog.csdn.net/weixin_45339692/article/details/105173543