AI-Tank
编程,就是编写人生,你的思维越好,就的生活就会充满乐趣,不多说了,下面来讲一个游戏。
讲游戏的开始,要说一点,游戏可以玩,不能沉溺。不然人的一生就会沦陷进去。
下面讲一个使用的代码游戏。
在玩游戏的时候同时你的代码编写的能力也就提升了。废话少说。开讲:
首先学一门技术离不开它的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的更多相关文章
- [ASE]项目介绍及项目跟进——TANK BATTLE·INFINITE
童年的记忆,大概是每周末和小伙伴们围坐在电视机前,在20来寸的电视机屏幕里守卫着这个至今都不知道是什么的白色大鸟. 当年被打爆的坦克数量估计也能绕地球个三两圈了吧. 十几年过去了,游戏从2D-3D,画 ...
- [ASE][Daily Scrum]11.17
这两天感冒了没有第一时间更新blog和tfs,给大家抱歉了! 上周五我们已经将服务器搭建完成并成功通讯,周六周日大家非常给力的完成了很多内容! View Shilin Liu 处理来自服务器的数据 显 ...
- Unity3D自定义资源配置文件
http://blog.csdn.net/candycat1992/article/details/52181814 写在前面 我竟然最近两天才知道Unity中ScriptableObject的存在… ...
- 如何建立一个完整的游戏AI
http://blog.friskit.me/2012/04/how-to-build-a-perfect-game-ai/ 人工智能(Artificial Intelligence)在游戏中使用已经 ...
- cocos2d-x游戏开发系列教程-坦克大战游戏之敌方坦克AI的编写
在上篇我们完成了子弹和地图碰撞的检测,在这篇我们将完成敌方坦克AI的编写. 具体思路是屏幕中保持有四个敌方坦克,然后坦克随机方向运动,并且子弹消失后1秒发射一次 1.我们新建一个敌方坦克的AI类来控制 ...
- [Proposal]Tank Battle——Infinite
Tank Battle——Infinite 把经典的坦克大战扩展到一个“无限”大的2D地图上.支持“全世界”的玩家同时在线玩. 游戏模式当然要做成全新的.增加玩家之间的交互,但又不较强的依赖于实时的通 ...
- 马里奥AI实现方式探索 ——神经网络+增强学习
[TOC] 马里奥AI实现方式探索 --神经网络+增强学习 儿时我们都曾有过一个经典游戏的体验,就是马里奥(顶蘑菇^v^),这次里约奥运会闭幕式,日本作为2020年东京奥运会的东道主,安倍最后也已经典 ...
- 普通程序员如何转向AI方向
眼下,人工智能已经成为越来越火的一个方向.普通程序员,如何转向人工智能方向,是知乎上的一个问题.本文是我对此问题的一个回答的归档版.相比原回答有所内容增加. 一. 目的 本文的目的是给出一个简单的,平 ...
- AI人工智能系列随笔
初探 AI人工智能系列随笔:syntaxnet 初探(1)
- 游戏AI系列内容 咋样才能做个有意思的AI呢
游戏AI系列内容 咋样才能做个有意思的AI呢 写在前面的话 怪物AI怎么才能做的比较有意思.其实这个命题有点大,我作为一个仅仅进入游戏行业两年接触怪物AI还不到一年的程序员来说,来谈这个话题,我想我是 ...
随机推荐
- 题目1208:10进制 VS 2进制(进制转换以及大数保存问题)
题目链接:http://ac.jobdu.com/problem.php?pid=1208 详细链接:https://github.com/zpfbuaa/JobduInCPlusPlus 参考代码: ...
- nginx fastcgi配置
1.1 nginx概述nginx简介Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为“engine X”, 是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/P ...
- JDBC的驱动是如何加载的
注:本文出处:http://www.cnblogs.com/jiaoyiping/ 转载请保留出处 JDBC定义了一套接口,数据库产品的提供商会实现这些接口来提供自己的数据库驱动程序,这是个很好的面向 ...
- C语言位操作--不用中间变量交换两数值
1.使用加法与减法交换两数值: #define SWAP(a, b) ((&(a) == &(b)) || \ (((a) -= (b)), ((b) += (a)), ((a) = ...
- 23种设计模式之解释器模式(Interpreter)
解释器模式属于类的行为型模式,描述了如何为语言定义一个文法,如何在该语言中表示一个句子,以及如何解释这些句子,这里的“语言”是使用规定格式和语法的代码.解释器模式主要用在编译器中,在应用系统开发中很少 ...
- zookeeper学习资料汇总
zookeeper入门介绍 (1) zookeeper入门介绍 (2) zookeeper应用场景介绍 (淘宝团队) (3) 分布式服务框架 Zookeeper -- 管理分布式环境中 ...
- JAVA中域、方法、类的可见性
多态在域的问题上是特殊的.我理解不了中文版的书直接叫域,看了英文原版,原版写的是fields,直接翻译虽然没错,但是出问题的变量不是域.特地查了what is the meaning of field ...
- TOP100summit 2017:【案例分享】魅族持续交付平台建设实践
本篇文章内容来自第10期魅族开放日魅族运维架构师林钟洪的现场分享.编辑:Cynthia 一.自动化建设历程1.1 魅族互联网发展的时间线 2003-2008年被称之为“互联网1.0时代”.2003年, ...
- kdevelop使用笔记
https://www.cnblogs.com/-Mr-y/p/7707176.html#_label7
- linux下pip安装pygame
在学习python的过程中要用到pygame,在安装过程中遇到一些问题,经百度解决.因为使用的版本为python3,故以下教程针对python3版本.安装教程如下: 一.首先你要确保你已经安装了pip ...