Download AI2

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts

Functional programming wikipedia , lookup

Object-oriented programming wikipedia , lookup

Reactive programming wikipedia , lookup

Java (programming language) wikipedia , lookup

Structured programming wikipedia , lookup

Java performance wikipedia , lookup

C Sharp (programming language) wikipedia , lookup

Transcript
240-492
Games Programming with Java
Montri Karnjanadecha
Andrew Davison
240-492 Games Programming with Java
::: AI :::
1
Chapter 2
Introduction to
Artificial Intelligence
240-492 Games Programming with Java
::: AI :::
2
Outline
• Definition of Artificial Intelligence
• Uninformed Search Methods
• Informed Search Methods
• Game AI
240-492 Games Programming with Java
::: AI :::
3
What is AI?
• Systems that think like humans
– “The exciting new effort to make computer think …..
machine with minds, in the full an literal sense”
– “Activities that we associate with human thinking,
activities such as decision-making, problem-solving,
learning…”
• Systems that think rationally
– “The study of mental faculties through the use of
computational models”
– “The study of the computations that make it possible to
perceive, reason, and act”
240-492 Games Programming with Java
::: AI :::
4
That is AI? (cont’d)
• Systems that act like humans
– “The art of creating machines that perform functions
that require intelligence when performed by people”
– “The study of how to make computers do things at
which, at the moment, people are better”
• Systems that act rationally
– “A field of study that seeks to explain and emulate
intelligent behavior in terms of computational
processes”
– “The branch of computer science that is concerned with
the automation of intelligent behavior”
240-492 Games Programming with Java
::: AI :::
5
What is AI? (cont’d)
To make the computer think
240-492 Games Programming with Java
::: AI :::
6
Simple AI Stuff
A board with tokens
240-492 Games Programming with Java
::: AI :::
7
Closing the gap
A board with tokens
240-492 Games Programming with Java
::: AI :::
8
Chase Algorithm
if (lx!=dx)
{
if (lx>dx)
{
lx--;
}
else
{
lx++;
}
}
if (ly!=dy)
{
if (ly>dy)
{
ly--;
}
else
{
ly++;
}
}
// check for non-matching x
// higher x, so decrease it
// lower x, so increase it
// check for non-matching y
// higher y, so decrease it
// lower y, so increase it
240-492 Games Programming with Java
::: AI :::
9
Evade Algorithm
if (lx!=dx)
{
if (lx>dx)
{
lx++;
}
else
{
lx--;
}
}
if (ly!=dy)
{
if (ly>dy)
{
ly++;
}
else
{
ly--;
}
}
// check for non-matching x
// higher x, so increase it
// lower x, so decrease it
// check for non-matching y
// higher y, so increase it
// lower y, so decrease it
240-492 Games Programming with Java
::: AI :::
10
Chasing Struck
The simple chase algorithm fails when
unmovable blocks are presented
240-492 Games Programming with Java
::: AI :::
11
Evading the Obstacle
240-492 Games Programming with Java
::: AI :::
12
More Advanced Pathfinding
• A* pathfinding algorithm
-1
-1
-1
-1
-1
-1
-1
-1
-1
0
-1
-1
-1
-1
-1
-1
-1
-1
-1
255
255
255
-1
-1
-1
-1
-1
255
-1
-1
-1
-1
-1
-1
-1
255
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
240-492 Games Programming with Java
::: AI :::
1. Create a 2-D integer array as
large as the map size
2. Fill all cells with -1 (-1 means
not tested yet)
3. For any “blocked” cell, put a
large number (e.g. 255)
4. Place a 0 in the target cell
13
A* pathfinding algorithm
• Path finding
-1
-1
-1
-1
-1
-1
-1
-1
-1
0
-1
-1
-1
-1
-1
-1
-1
-1
-1
255
255
255
-1
-1
-1
-1
-1
255
-1
-1
-1
-1
-1
-1
-1
255
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
240-492 Games Programming with Java
::: AI :::
5. Start at the target cell (the
known distance cell)
6. Determine valid adjacent cells
7. Give the adjacent cells a
known distance value
8. Repeat step 5
Stop Citeria
1. No adjacent cells
2. The cell of origin gets filled in
14
When It’s All Done
• Path finding
1
1
1
2
3
4
5
6
1
0
1
2
3
4
5
6
1
1
1
255
255
255
6
6
2
2
2
255
6
6
6
6
3
3
3
255
5
6
7
7
4
4
4
4
5
6
7
8
5
5
5
5
5
6
7
8
6
6
6
6
6
6
7
8
240-492 Games Programming with Java
::: AI :::
5. Start at the target cell (the
known distance cell)
6. Determine valid adjacent cells
7. Give the adjacent cells a
known distance value
8. Repeat step 5
Stop Criteria
1. No adjacent cells
2. The cell of origin gets filled in
15
Backtracking
• In order for the red piece to capture the green
piece, the red piece must move to lower-values
cells-- from 7->6, 6-> 5, 5->4, 4->3, 3->2, 2->1
and 1->0
240-492 Games Programming with Java
::: AI :::
16