贪吃蛇第二弹
内容:创建一个界面,并在界面中画单元格
代码如下:
package snake;
import java.awt.Color;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
/**
* 项目名称:Snake
* 创建人:YM
* 类描述: 创建一个界面,并在界面中画单元格
* 创建时间:2019年1月16日 下午2:59:06
*
*/
public class SnakeMain extends Frame {
private static final int SNAKE_WIDTH = 1000; // 定义组件的宽度
private static final int SNAKE_HEIGHT = 600; // 定义组件的高度
private static final int squareSize = 25; // 用来确定单元格的大小
public static void main(String[] args) {
SnakeMain s = new SnakeMain(); // 构建SnakeMai类的一个实例,并命名为s
s.launchFrame(); // 调用实例中的launchFrame()方法
}
private void launchFrame() {
this.setLocation(100, 100); // 确定组件位置
this.setSize(SNAKE_WIDTH, SNAKE_HEIGHT); // 确定组件大小
this.setBackground(Color.WHITE); // 确定组件背景颜色
this.setTitle("我的贪吃蛇"); // 设置窗口的标题
// 添加关闭的处理事件
this.addWindowListener(new WindowAdapter() {
// 添加一个窗口监听
@Override
public void windowClosing(WindowEvent e) {
System.exit(0); // 窗口关闭事件
}
});
// 禁止改变窗的大小
this.setResizable(false);
this.setVisible(true);
}
@Override
public void paint(Graphics g) {
// 调用画笔
Color c = g.getColor();
g.setColor(Color.GRAY); // 设置画笔颜色
int xweight = SNAKE_WIDTH / squareSize;
int xheight = SNAKE_HEIGHT / squareSize;
// 画线
for (int i = 0; i < xweight; i++) {
g.drawLine(i * squareSize, 0, i * squareSize, SNAKE_HEIGHT);
} // 画纵向的线
for (int i = 0; i < xheight; i++) {
g.drawLine(0, i * squareSize, SNAKE_WIDTH, i * squareSize);
} // 画横向的线
g.setColor(c);
}
}
样图
从贪吃蛇第二弹中学到的知识点:
1,Java中的public,private,static,final
public,private是访问权限修饰符,用于控制外界对类的内部成员的访问,其中
public:表明对象成员是完全共有的,外界可以随意访问
private:表明对象成员是完全私有的,不容许外界的任何访问
static,final是控制成员变化的修饰符
static:静态成员修饰符,其修饰的静态变量脱离具体对象而存在,所有的对象都公用这个修饰符的存储空间,所以对static修饰的静态变量在进行修改时对所有对象都起作用所以说static本质上是一个全局变量,声明为static的方法有三条限制
1,它们仅可以调用其他的static方法
2,它们只能访问static数据
3,它们不能已任何形式引用this,super
final:final用来修饰方法和属性表示特殊意义,修饰方法时表示该方法不能被重写,修饰属性时表示属性不能被改变,属性又分为对象和基本类型,修饰基本类型时表示基本类型赋值后不能被赋值,修饰对象表示这个属性不能在指向其他对象
2,public void paint (Graphics g)
paint()方法主要作用是在Applet的界面中显示文字,图形和其他界面元素
repaint()方法用于重绘组件,但该方法并不总是马上执行,只能尽可能快的执行,具有刷新页面的效果,repaint()通过调用线程,再由线程去调用update()方法清除当前显示再调用paint()方法绘制下一个需要显示的图形,从而在视角上形成动画
update():清除当前显示,并调用paint()方法
Graphics是一个抽象类,它的对象是用来传给paint()方法作为画笔的
画线:Graphics中的drawLine(int x1,int y1,int x2 int y2)方法
例:g.drawLine(10,5,100,200)此代码是在(10,5)与(100,200)之间画一条线
g.drawLine (10,10,10,10)此代码是在(10,10)处画一个点
画矩形:drawRect(int x,int y,int width,int height)
(x,y)确定了该矩形的左上角位置,width,height分别确定了矩形的宽和高
g.setColor(Color.color)用于设置画笔的颜色
fillRect(int x,int y,int width,int height)是用预定义的颜色填充一个矩形得到着色的矩形块
画圆角矩形:drawRoundRect(int x,int y,int width,int height,int arcWidth,int arcHeight)
arcWidth和arcHeight分别是圆角弧的横向直径和圆角弧的纵向直径
fillRoundRect(int x,int y,int width,int height,int arcWidth,int arcHeight)是用预定义的颜色填充一个圆角矩形得到着色的圆角矩形块
当圆角矩形的weight,height,arcWidth,arcHeight相等时,得到的是圆形
画椭圆形:drawOval(int x,int y,int width,int height)
(x,y)确定了该椭圆形的左上角位置,width,height分别确定了椭圆形的横轴和纵轴
fillOval(int x,int y,int width,int height)是用预定义的颜色填充一个椭圆形得到着色的椭圆形块
画圆弧:drawArc(int x,int y,int width,int height,int startAngle,int arcAngle)
(x,y)确定了左上角位置,width,height分别确定了宽和高,startAngle的单位是度,startAngle和int arcAngle表示从startAngle角度开始,逆时针画向arcAngle的弧