Java & Robocup Rescue(1)

来源:互联网 发布:天津大学软件学院地址 编辑:程序博客网 时间:2024/06/04 01:38

看了两周的Java 核心技术 卷一 是时候将所看所学内化整合一番,本文将结合RoboCop rescue中的一些内容对我这断时间的学习做个小小小小结。

本Markdown编辑器使用[StackEdit][6]修改而来,用它写博客,将会带来全新的体验哦:

  • 继承
  • 接口
  • 泛型

    • 简单的继承
    • 接口
    • 题外话 五子棋和贪吃蛇的判断代码
    • 泛型


简单的继承

``` Javainheritance/Student.javapackage inheritance;import java.util.*;//超类为所有学生public class Student {  //超类中含有三个实例private String name;private int grade;private int rank;public Student (String name, int grade, int rank){    this.name = name;    this.grade = grade;    this.rank = rank;}public String getname(){    return name;}public int getgrade(){    return grade;}public int get rank(){    return rank;}public String toString(){    return getClass.getName() + "[name="+name+",grade="+grade+"rank="+rank+"]";}}package inheritance;//由超类继承而来的子类 middleStupublic class middleStu extends Student {private boolean IsthreeGood;//定义一个超类中没有的实例域public middleStu (String name, int rank, int grade){//用super关键字调用超类的构造函数    super (name, grade, rank);    IsthreeGood = false;}public void set ThreeGood(){    IsthreeGood = true;}    public String toString(){    return super.toString()+"[ThreeGood?:"+IsthreeGood+"]";}}

接口

//示例为贪吃蛇的部分代码//一个实现了Runnable接口的PaintThread类private class PaintThread implements Runnable{      private boolean running = true; 

在Runnable接口中有一个方法 run 需要在类中具体实现

 public void run()      {          while(running)          {              repaint();              try{                  Thread.sleep(100);              }catch(InterruptedException e){                  e.printStackTrace();              }          }      }      public void gameOver()      {          running = false;      }  }  

题外话 五子棋和贪吃蛇的判断代码

int continueCount=1;//连续棋子的个数      for(int x=xIndex-1;x>=0;x--){//横向向左寻找          Color c=isBack ? Color.black : Color.white;          if(getChess(x,yIndex,c)!=null){              continueCount++;          }else              break;      }  //横向向右寻找          Color c=isBack ? Color.black : Color.white;          if(getChess(x,yIndex,c)!=null){              continueCount++;          }else              break;      }      if(continueCount>=5){    //判断记录数大于等于五,即表示此方获胜          return true;      }else          continueCount=1;  //左右方向找完后必须将计数器归零

上下方向,两个对角方向的算法与上类似不再赘述

运动时随键盘敲入 转向

public void keyPressed(KeyEvent e) {    int key = e.getKeyCode();    switch(key) {    case KeyEvent.VK_LEFT  :        // 当按键为左的时候,只要前进方向不是右,即可转向        if(head.dir != Dir.R)            head.dir = Dir.L;        break;        ...        ...        }

连续运动

private void move() {    addToHead(); //头部增加一个结点    deleteFromTail();//尾部同时释放一个结点以达到前进的效果    checkDead();}

泛型

Java中的泛型可以同C++中的template模板相类比
可以有 泛型类, 泛型方法

Public class Pair <T>{    private T first;    private T second;    public Pair(){ first = null;second = null;}    ...}

之后我们可以定义String类型的Pair

class Test{    public static Pair<String> getmin(String[] a)    {...}

通过对类型变量T设置限定,可以将T限制为实现某个接口
如:

public static <T extends Comparable> T min(T[]a)//T实现了Comparable 接口{ ...}
原创粉丝点击