2019/5/6 学习总结
方法
1.方法的概念:(函数/过程)
-
封装了一段特定业务逻辑功能
尽可能的独立,一个方法只让干一件事
方法可以被反复地重复的调用
减少代码的重复,有利于代码的维护,减少团队开发的成本,提高开发的效率
2.方法的语法规范:
修饰词 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2,…){
方法体;//业务逻辑功能的具体实现
return 返回值;
}
//如果无返回值类型,就没有return返回值;
解释:
- 修饰词:public static
- 返回值类型:用于限定返回值的数据类型;
- 方法名:方便调用方法的名字
- 参数类型:限定调用方法时,传入数据的类型
- 参数名:接收调用方法时,传入数据的变量
- 方法体
- return:结束方法,把返回值传回给调用者
- 实际参数:如果参数的类型是引用数据类型,形式参数的改变会影响实际参数的改变
- 如果方法的参数是基本数据类型,形式参数的改变不会影响实际参数的改变
方法的调用:
- 单独调用,没有意义
- 输出调用,有意义,不够好
- 赋值调用,推荐方式
继昨天画乌龟
加入用键盘让乌龟动起来的JAVA语句
package cn.tedu.day04;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.ArrayList;
import java.util.EventListener;
import javax.swing.JPanel;
import javax.swing.event.MouseInputListener;
public class TJPanel1 extends JPanel implements KeyListener,MouseListener,Runnable{
int x = 600;
int y = 600;
int state = 1;
//脚
int k1 = 600, t1 = 600;//左上
int k2 = 600, t2 = 600;//右上
int k3 = 600, t3 = 600;//左下
int k4 = 600, t4 = 600;//右下
//加水的波纹
int[] a = new int[400];//300个x坐标
int[] b = new int[400];//300个y坐标
//泡泡
int[] c = new int[400];//300个x坐标
int[] d = new int[400];//300个y坐标
//定义一个方向position
//当position==0的时候,乌龟左上脚和右下脚进行向前移动
int position = 0;
//构造方法:方法名和类同名;无任何返回值类型;无参构造
public TJPanel1(){
//随机产生位置
for (int i = 0; i < a.length; i++) {
a[i] = (int) (Math.random()*100000);
b[i] = (int) (Math.random()*800);
}
for (int i = 0; i < c.length; i++) {
c[i] = (int) (Math.random()*5);
d[i] = (int) (Math.random()*5);
}
Thread t = new Thread(this);
t.start();//启动线程
}
//Graphics g:画笔
@Override//输入paint 然后按 alt+o
public void paint(Graphics g) {
super.paint(g);
if (state == 1) {
//修改底部背景色
this.setBackground(Color.CYAN);
//给画笔设置颜色
//g.setColor(Color.YELLOW);
//画矩形
//g.drawRect(60, 20, 210, 260);
//画实心矩形
//g.fillRect(80, 50, 150, 130);
//画圆或椭圆
//g.drawOval(80, 40, 100, 100);
//画实心圆或椭圆
g.setColor(Color.white);
for (int i = 0; i < c.length; i++) {
g.fillOval(a[i], b[i], 20, 80);
boolean judge = hit(a[i], b[i], x, y);
if (judge == true) {
state = 2;
}
}
//g.setColor(Color.BLACK);
//画线段
//g.drawLine(80, 80, 150, 300);
//奥迪车标
//g.drawOval(50, 40, 80, 80);
//g.drawOval(110, 40, 80, 80);
//g.drawOval(170, 40, 80, 80);
//g.drawOval(230, 40, 80, 80);
// int x = 150;
// int y = 40;
//画波纹
/* g.setColor(Color.BLUE);
for (int i = 0; i < a.length; i++) {
g.drawString("~~~~~~~~", a[i], b[i]);
}
*/
g.setColor(Color.green);
g.fillOval(x, y, 50, 80);
//加眼睛
g.setColor(Color.black);
g.fillOval(x+10, y+20, 8, 15);
g.fillOval(x+30, y+20, 8, 15);
//加舌头
g.setColor(Color.red);
g.fillOval(x+20, y, 8, 8);
//加脚
g.setColor(Color.GREEN);
//左上
g.fillOval(k1-30, t1+40, 30, 50);
//左下
g.fillOval(k3-30, t3+130, 30, 50);
//右上
g.fillOval(k2+50, t2+40, 30, 50);
//右下
g.fillOval(k4+50, t4+130, 30, 50);
//加乌龟壳
g.setColor(Color.ORANGE);
g.fillOval(x-30, y+40, 110, 130);
//壳加文字
g.setColor(Color.RED);
//设置字体大小
Font font = new Font(Font.DIALOG, Font.BOLD, 14);
g.setFont(font);
g.drawString("忍者神龟", x, y+105);
}else{
Font font = new Font(Font.DIALOG, Font.BOLD, 80);
g.setFont(font);
g.drawString("失败", x, y+105);
}
}
public boolean hit(int a, int b, int c, int d){
boolean crash = false;
if(c < a && a - d < 100 && c + 100 >a){
crash = true;
}
return crash;
}
@Override
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub
}
@Override
public void keyPressed(KeyEvent e) {
// TODO Auto-generated method stub
// System.out.println("点击了按钮");
if (e.getKeyCode() == KeyEvent.VK_UP) {
//System.out.println("点击了上方向键");
y = y - 10;
if (position == 0) {
t1 = t1 - 20;
t4 = t4 -20;
}
if (position == 1){
t2 = t2 - 20;
t3 = t3 - 20;
}
if (t1 < t2) {
/*if (x != k1) {
x = k1 = k2 = k3 = k4;
}*/
position = 1;
}
if (t1 >= t2) {
/*if (x != k1) {
x = k1 = k2 = k3 = k4;
}*/
position = 0;
}
}
if (e.getKeyCode() == KeyEvent.VK_DOWN) {
//System.out.println("点击了下方向键");
y = y + 10;
if (position == 0) {
t1 = t1 + 20;
t4 = t4 + 20;
}
if (position == 1){
t2 = t2 + 20;
t3 = t3 + 20;
}
if (t1 < t2) {
if (x != k1) {
x = k1 = k2 = k3 = k4;
}
position = 0;
}
if (t1 >= t2) {
if (x != k1) {
x = k1 = k2 = k3 = k4;
}
position = 1;
}
}
if (e.getKeyCode() == KeyEvent.VK_LEFT) {
//System.out.println("点击了左方向键");
x = x - 10;
if (position == 0) {
k1 = k1 - 20;
k3 = k3 - 20;
}
if (position == 1){
k2 = k2 - 20;
k4 = k4 - 20;
}
if (k1 < k2) {
if (y != t1) {
y = t1 = t2 = t3 = t4;
}
position = 1;
}
if (k1 >= k2) {
if (y != t1) {
y = t1 = t2 = t3 = t4;
}
position = 0;
}
}
if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
//System.out.println("点击了右方向键");
x = x + 10;
if (position == 0) {
k1 = k1 + 20;
k3 = k3 + 20;
}
if (position == 1){
k2 = k2 + 20;
k4 = k4 + 20;
}
if (k1 < k2) {
if (y != t1) {
y = t1 = t2 = t3 = t4;
}
position = 0;
}
if (k1 >= k2) {
if (y != t1) {
y = t1 = t2 = t3 = t4;
}
position = 1;
}
}
repaint();
}
@Override
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub
/* if (e.getKeyCode() == KeyEvent.VK_UP) {
//System.out.println("点击了上方向键");
}
if (e.getKeyCode() == KeyEvent.VK_DOWN) {
//System.out.println("点击了下方向键");
}
if (e.getKeyCode() == KeyEvent.VK_LEFT) {
//System.out.println("点击了左方向键");
}
if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
//System.out.println("点击了右方向键");
}
*/
}
@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
}
//使用方法
@Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
//System.out.println("11111");
x = e.getX();
y = e.getY();
k1 = e.getX();
t1 = e.getY();
k2 = e.getX();
t2 = e.getY();
k3 = e.getX();
t3 = e.getY();
k4 = e.getX();
t4 = e.getY();
repaint();//重绘,重复调用paint方法
}
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
//
@Override
public void run() {
//System.out.println("11111");
while (true) {
for (int i = 0; i < b.length; i++) {
b[i]++;
if (b[i] > 1000) {
b[i] = -50;
}
}
try {
Thread.sleep(3);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
repaint();
}
}
}