编程,就是编写人生,你的思维越好,就的生活就会充满乐趣,不多说了,下面来讲一个游戏。

  讲游戏的开始,要说一点,游戏可以玩,不能沉溺。不然人的一生就会沦陷进去。

  下面讲一个使用的代码游戏。

  在玩游戏的时候同时你的代码编写的能力也就提升了。废话少说。开讲:

    首先学一门技术离不开它的API,现在就将API中的主要使用的函数跟类

    首先第一个登场的就是onTick函数,这个函数是干什么用的啊?在游戏的场景中,这个函数每个单位时间都会触发的,是你电脑的系统触发的,不是我们调用的。通过这个函数我们可以时时得到敌人的信息,和场景中的数据。

    第二个函数是onRoundBegin这个函数,这个函数是当开始一轮新的游戏时触发的,那这个函数有什么用啊,比如一些初始化的参数什么的都可以写在这个函数中,不是必须的,还是根据实际需求来写的。

    第三个函数是onHitWall这个函数,看着名字大家估计就猜出来它是干什么用的了,就是碰到墙的时候一个处理函数,当你的人物碰到墙的时候,你要告诉你的角色跳转方向什么的都可以在这个函数中写。

    getHeading()是获得自己的当前的方向。

    MathUtils.bearing(jiao1,jiao2);这个函数是返回的两个角之间的夹角。

    turn(角度);旋转旋转车身的方向,角度有正负之分,正代表逆时针旋转,负代表顺时针旋转。

    move(距离);移动的距离,距离有正负之分,正代表前进,负代表后退。

好了终于啰嗦完了!

下面上代码:自己动手可以试试,很优美的代码

    

import org.robochina.airobot.tank.*;
import org.robochina.math.*;
import java.awt.geom.*;
import java.util.*; /**
* 这个类对应一个机器人,根据需要实现相应的Action处理函数,
* 就可以订制自己的机器人。
这个机器人就是围绕着墙一直转
*/
public class AiryCode1 extends SimpleRobot
{
/**
* 每个单位时间都会触发
*/ private double headingTo;
public void onTick(TickAction action){
//计算当前的方向和headingTo之间的夹角
double angle = MathUtils.bearing(headingTo,getHeading());
if (angle != 0)
{
move(0);
turn(angle);
}
else
{
turn(0);
move(8);
} } /**
* 当开始一轮新的比赛时触发
*/
public void onRoundBegin(RoundBeginAction action){
//初始化转动的方向
headingTo = 0; } /**
* 当一轮比赛结束时触发
*/
public void onRoundFinish(RoundFinishAction action){} /**
* 当开始一场新的比赛时触发
*/
public void onMatchBegin(MatchBeginAction action){} /**
* 当整场比赛结束时触发
*/
public void onMatchFinish(MatchFinishAction action){} /**
* 当有队友向自己发送消息时触发
*/
public void onMessageReceived(MessageReceivedAction action){} /**
* 当撞到其它机器人时触发
*/
public void onHitRobot(HitRobotAction action){} /**
* 当撞到墙时触发
*/
public void onHitWall(HitWallAction action){ //改变前进的方向
headingTo+=Math.PI/2; } /**
* 当任意一个机器人开火时触发
*/
public void onFire(FireAction action){} /**
* 当有机器人死亡时触发
*/
public void onRobotDeath(RobotDeathAction action){} /**
* 当自己的子弹击中敌人时触发
*/
public void onBulletHit(BulletHitAction action){} /**
* 当被别人的子弹击中时触发
*/
public void onHitedByBullet(HitedByBulletAction action){} /**
* 机器人程序入口
* @param args
*/
public static void main(String[] args)
{
startup(args, new AiryCode1());
}
}

  

AI-Tank的更多相关文章

  1. [ASE]项目介绍及项目跟进——TANK BATTLE·INFINITE

    童年的记忆,大概是每周末和小伙伴们围坐在电视机前,在20来寸的电视机屏幕里守卫着这个至今都不知道是什么的白色大鸟. 当年被打爆的坦克数量估计也能绕地球个三两圈了吧. 十几年过去了,游戏从2D-3D,画 ...

  2. [ASE][Daily Scrum]11.17

    这两天感冒了没有第一时间更新blog和tfs,给大家抱歉了! 上周五我们已经将服务器搭建完成并成功通讯,周六周日大家非常给力的完成了很多内容! View Shilin Liu 处理来自服务器的数据 显 ...

  3. Unity3D自定义资源配置文件

    http://blog.csdn.net/candycat1992/article/details/52181814 写在前面 我竟然最近两天才知道Unity中ScriptableObject的存在… ...

  4. 如何建立一个完整的游戏AI

    http://blog.friskit.me/2012/04/how-to-build-a-perfect-game-ai/ 人工智能(Artificial Intelligence)在游戏中使用已经 ...

  5. cocos2d-x游戏开发系列教程-坦克大战游戏之敌方坦克AI的编写

    在上篇我们完成了子弹和地图碰撞的检测,在这篇我们将完成敌方坦克AI的编写. 具体思路是屏幕中保持有四个敌方坦克,然后坦克随机方向运动,并且子弹消失后1秒发射一次 1.我们新建一个敌方坦克的AI类来控制 ...

  6. [Proposal]Tank Battle——Infinite

    Tank Battle——Infinite 把经典的坦克大战扩展到一个“无限”大的2D地图上.支持“全世界”的玩家同时在线玩. 游戏模式当然要做成全新的.增加玩家之间的交互,但又不较强的依赖于实时的通 ...

  7. 马里奥AI实现方式探索 ——神经网络+增强学习

    [TOC] 马里奥AI实现方式探索 --神经网络+增强学习 儿时我们都曾有过一个经典游戏的体验,就是马里奥(顶蘑菇^v^),这次里约奥运会闭幕式,日本作为2020年东京奥运会的东道主,安倍最后也已经典 ...

  8. 普通程序员如何转向AI方向

    眼下,人工智能已经成为越来越火的一个方向.普通程序员,如何转向人工智能方向,是知乎上的一个问题.本文是我对此问题的一个回答的归档版.相比原回答有所内容增加. 一. 目的 本文的目的是给出一个简单的,平 ...

  9. AI人工智能系列随笔

    初探 AI人工智能系列随笔:syntaxnet 初探(1)

  10. 游戏AI系列内容 咋样才能做个有意思的AI呢

    游戏AI系列内容 咋样才能做个有意思的AI呢 写在前面的话 怪物AI怎么才能做的比较有意思.其实这个命题有点大,我作为一个仅仅进入游戏行业两年接触怪物AI还不到一年的程序员来说,来谈这个话题,我想我是 ...

随机推荐

  1. Centos7.0 配置docker 镜像加速

    在Docker Hub官网上注册帐号,即可下载使用仓库里的全部的docker镜像.而因为网络原因,国内的开发者没办法流畅的下载镜像,经常会出现下载中断的错误.解决方法就是使用国内的容器Hub加速服务, ...

  2. VB学习之路基础(一)

    1.VB不区分大小定,VB编辑器会自动更正. 2.每一行代码语句,没有语句结束符. 3.续行符:一个"空格"加上一个"下划线".不能在参数中间加续行符. 5.合 ...

  3. 【Android】Android import和export使用说明 及 export报错:jarlist.cache: Resource is out of sync with the file syst解决

    在Android开发export项目时发现有时会报错,内容如下: Problems were encountered during export:  Error exporting PalmIdent ...

  4. 阿里云服务器如何设置IPV6通过appstore的审核

    苹果上架要求:要求支持IPV6only(因为阿里云主机没有IPV6only) 确认IPV6是否开启: 方式1:使用ifconfig查看自己的IP地址是否含有IPv6地址. 方式2.查看服务监听的IP中 ...

  5. 有向连通图增加多少边构成强联通(hdu3836,poj1236)

    hdu3836 求出强分量后缩点处理得到分支图,对分支图的每个强连通分量统计出度和入度.需要的边数就是:统计 入度=0 的顶点数 和 出度=0 的顶点数,选择两者中较大的一个,才能确保一个强连通图. ...

  6. 洛谷P2569 股票交易【dp】【单调队列】

    题目描述 最近 \text{lxhgww}lxhgww 又迷上了投资股票,通过一段时间的观察和学习,他总结出了股票行情的一些规律. 通过一段时间的观察,\text{lxhgww}lxhgww 预测到了 ...

  7. hdu4027Can you answer these queries?【线段树】

    A lot of battleships of evil are arranged in a line before the battle. Our commander decides to use ...

  8. android 控制POS机图文打印(二)

    上一篇文章结束了ESC/POS的指令集,没看过的可以去看一下,可以当作工具文档来使用的 android 控制POS机图文打印(一) 这一篇正式介绍如何使用POS机来打印图文信息. 首先介绍一下,ESC ...

  9. B. Berland National Library---cf567B(set|模拟)

    题目链接:http://codeforces.com/problemset/problem/567/B  题意:题目大意: 一个计数器, +号代表一个人进入图书馆, -号代表一个人出去图书馆. 给一个 ...

  10. 洛谷P2602 数字计数 [ZJOI2010] 数位dp

    正解:数位dp 解题报告: 传送门! 打算在寒假把学长发过题解的题目都做辣然后把不会的知识点都落实辣! ⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄ 然后这道题,开始想到的时候其实想到的是大模拟,就有点像之前考试贪 ...