Java & Robocup Rescue(1)

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

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

  • 继承
  • 接口
  • 泛型


简单的继承

``` Java
inheritance/Student.java
package 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;

//由超类继承而来的子类 middleStu

public 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 接口
{ ...}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值