How to find a good AI strategy for a survival game?

Hi, I'm a college student here developing a tank survival game for the finals. I have had very little experience in AI strategies, so I wonder if anyone here can give me a hint or two to start.
Thanks.
The game's description is below:
Goal:
Develop a good AI strategy for survival.
������������������������������������������������������������������������������������������
Game Name: Tank Survival
How game starts: All tanks will be placed on the board in random position
How game ends: When we have only one tank surviving, that's the winner
When does a tank die? When the energy of a tank is zero, it dies.
Game environment: A 15x15 closed environment, like a chess board
Participants: 5 teams, 3 tanks per team
������������������������������������������������������������������������������������������
Game Basic Rule
For each tank, only 1 action is allowed each turn.
A tank can move with a shield on, but shield costs energy.
When one tank destroyed another one, it takes all the energy left of the victim
tank. *(Bonus from kill � 1000 + (1/2)*Enemy energy before kil)
The tank's weapon can only shoot in continuous linear way.
������������������������������������������������������������������������������������������
Facts about the tank
Initial Tank Energy - 10000
Life Support Energy cost �- 50
Missile yield multiplier - � 3
Shield multiplier - � 5
Radar Cost = [(distance * accuracy) ^1.3] * 3 + 100
Missile Cost � yield + accuracy * distance * 7
Movement Cost = (distance^1.4) *50
Shield Cost = multiplier * Energy shielded
Maximum movement - distance � 5 (any direction)
Bonus from kill -� 1000 + (1/2)*Enemy energy before kill
Missile accuracy -� not disclosed
Radar Accruacy �- not disclosed
������������������������������������������������������������������������������������������
Key problems
� I only have 3 tanks. . .
� I have to survive among the other 15 tanks.
� None of the actions, misile, radar, or shield are 100% working. There are always chances that they don't work.

I think the first stage is to work out what constitutes a "state" and a "move." A state is the current board positions with all the tank energies and other parameters. A move is a transition from one state to another. Can you move around? Can you fire the gun and move the tank at the same time? If you fire the gun, does it miss sometimes?
You then have to have a way to evaluate a state. For instance, if you move closer to an enemy tank, does that put you in a better position or a worse position?
You can then draw a Moves Tree. This starts from where you are, shows all the moves you could make and the states you could end up in after one move. You can attach a value to each state.
Then you can extend the state tree by adding all the counter moves your enemy could make, and the states in which those moves would leave the game. Thus the transition from your state now, to your state after the enemy has moved, will show a gain or a loss, depending on whether you or the enemy gained more or lost less.
The strategy that wins the game will be the one that takes you from the start state to the goal state in such a way that your enemy cannot stop you. There are two possible strategies for choosing moves, Minimax and Maximin. Minimax means minimise your maximum loss; Maximim means maximise your minimum gain.
Try it first with a simple game like Nought and Crosses. The state tree grows very rapidly in the number of moves, so you may need some algorithm for pruning it or for generating only part of it at a time, as modern chess playing algorithms do.
Write in a computer language that is good at handling state trees. I used to use Prolog but some programmers swear by Lisp. You won't be able to solve the problem in a crap language like Basic, Pascal or anything like those.
You will need to read around the subject. If Alan Bundy has written anything recently, look at that first: he is an excellent writer and a very skilful practitioner as well.

Similar Messages

  • How to find that a sales order for which there is  delivery but no goods

    Hi
    How to find that a sales order for which there is  delivery but no goods issue has been done i.e we have an open delivery for a sales order.
    How in VBUK table can we find  out with the sales order no .
    Thanks in advance

    make use of table VBFA.
    Regards
    Peram

  • Where can I find a good, free effect for Final Cut Pro of electrocution?

    Where can I find a good, free effect for Final Cut Pro of electrocution?  I'm using it for a taser sequence.
    Thanks!
    Matthew

    Open Motion, look for lightningin the generators. From there, it's a question of figuring out how it works and what you need to do to make it work for your sequence. That's about as free as it gets and it will ony be as good--even if someone else did the work for you--as the amount of time you're willing to invest.
    bogiesan

  • Good backup strategy for a mailserver?

    Hi,
    What would be a good backup strategy for a mailserver and what software would you use. I've got Retrospect right now ...
    Thanks a lot.
    Jerome

    Yeah, ptero, I know. I'm using mailbfr and it seems to work quite fine.
    I didn't express myself clearly in this thread, I was in fact looking for the best way to backup a whole MacOS X Server whose primary function is being a mailserver.
    I'm backing up the mailbfr via Retrospect on another server, and I'm using Carbon Copy Cloner from time to time to make an image of the whole server. But is that a good idea? I've got a neat program on my Windows servers which makes 'continuous' incremental images of the whole disk while the servers are being used. Is there anything like that for Mac? Or how do you back up the system configuration of your Mac servers?
    But perhaps this is the wrong subforum to ask questions like this?
    Thanks alot anyway!

  • How To Find Opening Stock And Value For a Material

    Hi Experts,
    How To Find Opening Stock And Value For a Material  in Given Dates
    Moderator Message: Search.
    Edited by: kishan P on Sep 15, 2010 4:05 PM

    Thanks For Answering.....
    But I Need Any Function Module To Get Opening Stock And Value For Given Material With in Dates.

  • How to find the exact user exit for our requirement?

    Dear Mr. keerthi,
    can you please explain me how to find the exact user exit for our requirement?

    Hi sandip
    There is more than one method in which you can check for user-exits.The following method is used very often.
    <b>How to find the exact user-exit for your requirement.</b>
    1.     You can check the user exists using transaction SE85.
    2.     Repository Information System -> Enhancements -> Customer exits
    3.     You can search the user-exits by package name.
    4.     Double click on each exit name to check the function module exits.
    <b>The procedure to find the package name.</b>
    Execute transaction SE93 
    Enter the tcode of the transaction for which you want to check the user exit.
    Example: if you want to find the user-exit for purchase orders while changing, enter ME22n  and press display.
    You will get to see the package name
    But you need to confirm that the user exit will get triggered at the appropriate event.
    ( example: you might want some validations to be done ON SAVE of a purchase order)
    <b>Checking if the user-exit is getting triggered or not.</b>
    1.     Open the user exit function module (that you have got in step 4) in Tcode SE37.
    2.     Click on where used button. In the pop up that immediately appears choose only programs .
    3.     You will get a list of programs. Double click on the program name.
    4.     You will get the list of location where this function module user exit is used.
    5.     Place session break points at each of these location ( at each CALL FUNCTION statement)
    6.     Now go to your transaction ( say change purchase order tcode:Me22n) and check if the user exit is getting triggered on appropriate event.
    regards,
    Prasad

  • How to find the appropriate user exit for invoic02 idoc in idoc_output_invo

    Hi all,
    I am new to this community p
    i have issue regarding  the How to find the appropriate user exit for invoic02 idoc in idoc_output_invoic function module.........
    thanks,

    Hi ,
    welcome to SDN.
    You can select the appropriate Customer exit accrding to the available parameters .
    The list of exits available are 
    EXIT_SAPLVEDF_001
    EXIT_SAPLVEDF_002
    EXIT_SAPLVEDF_003
    EXIT_SAPLVEDF_004
    For Example , if you want  to modify the Idoc data(EDIDD) you have to use the EXIT_SAPLVEDF_002. accodingly you can select the user exit according to the avaialable parametres.Use Table MODSAP fto get the Enhancement name.
    Hope this Helps
    Rgds
    Sree
    Edited by: Sree on Jul 23, 2010 12:11 PM

  • PLEASE HELP ME FIND A GOOD CAR PLUG FOR MY iPHONE

    Alright guys, I have been through 3 different plugs to connect my iphone to my car to play music, and I am a bit ticked. So i figured I would ask the Apple Discussion Boards so you guys can tell me the best audio/charger combo for my iPhone. Here is what happened with each of my previous plugs...
    The first one was just a regular ordinary headphone plug that plugged from my iphones headphone slot to my car's auxiliary slot. It worked for a while but then the audio only started coming out through the right side of my car speakers occasionally, and I know for sure it is not my car that made the problem because my radio and CD's play fine through both speakers.
    The second one is a "Kensington LiquidAUX Auxiliary Car Kit with Remote for iPod and iPhone". First off the remote that it came with didn't work properly. But here comes the worse part that is so annoying. This problem got progressively worse by the way.... a lot of times the plug would think that it unplugged itself for some strange reason and the music would stop as well as the charging, but then 1 millisecond later it would think it was plugged back in, and although it starts charging again, the music doesn't play again until I press play. Don't tell me to make sure it is plugged in securely because trust me my friends, I have tried everything possible to get this to work. Keep in mind I am driving...so it is a very bad idea to be messing with my phone to press the play again. And lately it has been getting so bad that I actually have to unplug the plug from my iphone and then plug it back in and press play, which is incredibly annoying. This happens about once a minute OR MORE now a days. Also, it makes a really annoying "whirrling" sound whenever I am using it. By the way, I even turned Airplane mode on, and the exact same problems still happened. So a summary of this: this audio/charger combo is a failure.
    My 3rd plug I decided to try a normal headphone to aux plug again like the first except this time by a better brand, Griffin. But oh wait, the exact same problem happened that the first one had.
    Ok guys, so what I really want for you to do for me is PLEASE HELP ME FIND A GOOD CAR PLUG FOR MY iPHONE.
    Here is what I am looking for in my plug:
    Plays music through my car's speakers AND charges at the same time;
    I would prefer if it wasn't an FM transmitter because those tend to lose audio quality compared to direct plugins, unless you know of an amazing FM transmitter where you don't lose audio quality;
    And finally, I want my plug to ACTUALLY WORK WITHOUT GLITCHES
    Also, it would be nice if the plug that you refer to me, you actually own, so I know that you have tested it out before and that it works great.
    Any HELP would be very much appreciated, thank you.

    i thought about going the same route you did, but when I started looking at the prices of everything, I decided it was a better idea to just get a new stereo that can play and charge my iPhone.
    After a lot of comparing, looking and price checking, I decided to go with the Alpine IDA-X100. This is a media player only device (no cd player built in) and it has been great. It has an awesome interface and dial setup that let's you go through your music just as if it were on an iPod. It even has a small color screen that displays the album artwork for you. My car has a factory BOSE system in it and the Alpine head unit even managed to improve the sound quality. Go see you local alpine dealer (or best buy) and check it out. The supplied cable charges the phone and plays music too. Your iPhone will give you an error message when you plug it in, saying that the accessory was not designed for iPhone, but if you just click no it works great.

  • How to find and install right java for ECC6 intstallation on AIX5.3

    Hello
    I wander how to find and install right java for ECC6 intstallation on AIX5.3. I went thruroughly thru note 723909 and underlying 716927, 1008311 and 1039948 notes but I still do not understand.
    I guess I should logon to IBM site http://www.ibm.com/developerworks/java/jdk/aix/service.html
    where I can choose :
    " Java 1.4.2 64-bit "
    and then :
    "64-bit SDK 1.4.2 base images (at 1.4.2.0 level; in installp format) "->"Base SDK (required)
    Java14_64.sdk.tar  ((50001920)
    then I assume (on AIX ) I should "tar xvf Java14_64.sdk.tar".
    then I get extracted "Java14_64.sdk"
    Is this ok?
    I know on Linux(
    from IBM site I downloaded "IBMJava2-amd64-142.rpm"
    then I issued
    "rpm -i IBMJava2-amd64-142.rpm "
    and finally issued
    "export JAVA_HOME=/opt/IBMJava2-amd64-142")
    What in case of AIX5.3? Could you help me?

    I was told to use smitty (just I am not familiar with it). furdermore i do not hace read.me file. the ziped files are:
    Java14_64.ext
    -rw-rr 1  202 bin    371712 Mar  2  2010 Java14_64.license
    -rw-rr 1  202 bin      3072 Mar  2  2010 Java14_64.msg.ja_JP
    -rw-rr 1  202 bin      3072 Mar  2  2010 Java14_64.msg.Ja_JP
    -rw-rr 1  202 bin      3072 Mar  2  2010 Java14_64.msg.ko_KR
    -rw-rr 1  202 bin      3072 Mar  2  2010 Java14_64.msg.zh_CN
    -rw-rr 1  202 bin      3072 Mar  2  2010 Java14_64.msg.Zh_CN
    -rw-rr 1  202 bin      3072 Mar  2  2010 Java14_64.msg.zh_TW
    -rw-rr 1  202 bin      3072 Mar  2  2010 Java14_64.msg.Zh_TW
    -rw-rr 1  202 bin   4888576 Mar  2  2010 Java14_64.samples
    -rw-r----- 1 root root 67190784 Oct  4 09:53 Java14_64.sdk
    -rw-rr 1 root root 77370639 Nov 20 19:36 Java14_64.sdk.tar.gz
    -rw-r----- 1 root root 12612608 Oct  4 09:53 Java14_64.source

  • How to find suitable( existing) function group for a Function Module ?

    How to find suitable( existing) function group for a Function Module to be created?
    This is FM for converting amounts to text.

    Hi,
            If you are not sure into which Function group your FM should go in then its advised to create a Function group of your own. Its not advised to create a function module in any other function group unless its owned by you since your FM can get deleted by others or it can get changed.
    Create your own Function group. But if you want to create in an existing FG then best way is to find out the Function Group by searching for suitable existing Function module then see their function group
    Regards,
    Sesh

  • How to find whether MIRO is done for a PO

    Hi All,
    Is there any indicator attached to POs that indicates whether MIRO is done for that PO?
    I mean after PO creation in ME21N -> GR in MIGO -> Excise (if applicable) and -> MIRO... how to find whether MIRO is done for a particular PO?
    Helpful tips will be gratefully rewarded...
    Regards,
    Karthik

    See if an entry exist in EKBE for the PO Number and its items.
    The complete process though is, to find the GR Quantity for each PO Item and see if it matches with the PO Item quantity.
      SELECT EBELN
             EBELP
             MENGE
             LOEKZ
        FROM EKPO
        INTO TABLE LT_EKPO
       WHERE EBELN = P_EBELN.
      IF NOT LT_EKPO[] IS INITIAL.
        SELECT EBELN
               EBELP
               MENGE
               BEWTP
               GJAHR
               BELNR
               BUZEI
               SHKZG
          FROM EKBE
          INTO TABLE LT_EKBE
          FOR ALL ENTRIES IN LT_EKPO
         WHERE EBELN = LT_EKPO-EBELN
           AND EBELP = LT_EKPO-EBELP
           AND VGABE = '1'.
      ENDIF.
      LOOP AT LT_EKBE.
    * Change the sign of the quantity for debit
        IF LT_EKBE-SHKZG = C_SHKZG_H.
          LT_EKBE-MENGE = -1 * LT_EKBE-MENGE.
        ENDIF.
        MOVE-CORRESPONDING LT_EKBE TO LT_EKBE_SUM.
        COLLECT LT_EKBE_SUM INTO LT_EKBE_SUM.
        CLEAR LT_EKBE_SUM.
        ENDLOOP.
       loop at it_ekpo.
    ** For each line item, calculate the total GR Quanity
        READ TABLE LT_EKBE_SUM WITH KEY EBELN = LT_EKPO-EBELN
                                        EBELP = LT_AWKEY-EBELP.
        IF SY-SUBRC = 0.
    * If the PO Item Quantity is equal to GR Quantity
            IF LT_EKPO-MENGE <= LT_EKBE_SUM-MENGE.
    * The PO Item can be considered completed GRed
            ENDIF.
        ENDIF.
      ENDLOOP.

  • Where can i find a good download site for the iphone?

    where can find a good download site for the iphone for games and videos?

    There is only one - the iTunes App Store for apps/games with over 500,000 to choose from, and the iTunes Store for video - movies and tv shows.

  • How to find the profit center group for a profit center?

    How to find the profit center group for a profit center?

    Hi,
    try this also
    In order to pass the setid parameter of the FM, you have to concatenate the following things
    Setid + KOKRS (Controlling area) + Profit Center Group into one variable.
    In my example below, I have declared as constants and concatenating to gv_setid.
    gc_01016 is the set id for profit centers
    gc_kokrs is the controlling area
    gp_pprct is the Profit Center group entered in the selection screen.
    You will get KOKRS value from the cepc-kokrs.
    data :   gc_0106(4)   TYPE c VALUE '0106',
               gc_kokrs      LIKE cepc-kokrs VALUE 'ABCD'.
               gv_setid          LIKE sethier-setid,
               gt_set_values_1   LIKE setvalues OCCURS 0 WITH HEADER LINE.
      CONCATENATE gc_0106  gc_kokrs gp_pprct INTO gv_setid.
      CONDENSE gv_setid.
      CALL FUNCTION 'G_SET_TREE_IMPORT'
        EXPORTING
          client                    = sy-mandt
          fieldname                 = 'RPRCTR'
          langu                     = sy-langu
          setid                     = gv_setid
          tabname                   = 'GLPCT'
          no_table_buffering        = 'X'
        TABLES
          set_values                = gt_set_values_1
        EXCEPTIONS
          set_not_found             = 1
          illegal_field_replacement = 2
          illegal_table_replacement = 3
          OTHERS                    = 4.
    By using the above FM you will get the values into gt_set_values1 once sys-subrc value eq 0, it is internal table which consists of all the profit centers for the proft center group.
    Regards,
    Venkatesh

  • How to find out last update date for business partner's marketing attribute

    How to find out last update date for business partner's marketing attribute??
    Im freshie for SAP Application and im assigned to find out last update date for marketing attribute changed
    which table is involved??
    Yours kindness will be appreciated
    thanks

    You can take a look at table AUSP as well as CRMD_AUSP_HIST.
    The "changed by" and "changed at" are logged on attribute level, not on attribute value level. When you change one specific value, the system does a "re-insert" of all existing values of this attribute.
    Take a look at the SAP notes 938426 and 966670  these may assit you in resolving the issue.
    Regards,
    William Laverde

  • How to find out Max threads count for Custom Work Manager??

    Hi All,
    How to find out Max threads count for Custom Work Manager??
    I have created 1 WM & targeted it to a cluster of 2 MS. Later I created Max thread Constraint = 300 & assigned that to my WM.
    I need to check how many threads maximum were created by my WM after lets say 1 completed day.
    The idea behind that is to understand if .. 300 is enough or need to increase the same way as we do it for JDBC datasource like.. Active connections Max count.. etc.
    Any Idea?
    regards,
    Tanmay

    Hi Ashish,
    Thanks for your response.
    The monitoring page that you are suggesting does not indicate the max thread count reached for a particular WM.
    For example, If I have Sample WM with 300 Max Thread Constraint, is there a way for me to check how many threads have been used out of 300??
    Any pointers in this regard are appreciated.
    Thanks,
    Tanmay

Maybe you are looking for

  • File Adapter - Debatching & ChunkedRead

    Hi , Can anybody please tell me what is the difference between File Debatching & ChunkedRead in File Adapter . How the error handling mechanism differs in these two . Thanks in Advance .. Regards, Surfraz

  • Cd not opening up

    cant run cd for my daughter (disney maths) on imac...it says dosent support classic environment..can anybody help me with this.i have a imac 10.6.6

  • TS1402 Locked folder

    Hello. I'm using Mac OS X 10.6. After copying some folders from external hard drive to PC these folders are now locked on Mac. There is no pencil in the Finder's lower left corner and there are no messages appear. I just simply can't open these folde

  • Update flash player.External speakers fail.

    I use iMac OS 10.6.8. I updated today to the lastest flash player update 100.9.900.152 and since then my external speakers dont work. (Model Logitech Z-10). Also, my Click-to-plugin plugin doesnt work either although it is set to work and enabled pro

  • Is it possible to use NI's Kontakt library in the new Garageband from Mavericks?

    Please help! I can't find the "generator" button in the new Garageband... Did Apple remove it from Garageband? Or ist there an opportunity to get Kontakt run in the new Garageband? Thanks!