How to Make Game AI

Материал из Поле цифровой дидактики

Artificial Intelligence is the foundation of many games on Scratch. This article shows how to make an AI.

Coding the Program

First, two Sprites, the Player and the AI, need to be created.

Variables Required

(touching player)

This Variable will be used to let the game know that the AI is touching the player.

Coding The Player

Шаблон:Main The movement for the player is simple:

When green flag clicked
forever
	if <key (up arrow v) pressed> then
	change y by ()//Pick a number that best suits the player for movement.
	end
	if <key (down arrow v) pressed> then
	change y by ()
	end
	if <key (right arrow v) pressed> then
	change x by ()
	end
	if <key (left arrow v) pressed> then
	change x by ()
end

Coding The AI

The coding for the AI is simple:

When green flag clicked
forever
point towards (player v)
move () steps//Pick a speed that suits the project.
set [touching player v] to < touching (player v)?>//This will automatically set the variable to true if touching the player and false if it is not touching the player.
end

Creating an AI With Projectiles

Creating an AI with projectiles will be a bit of a challenge to any Scratch game. Another sprite needs to be created. This will be the projectile sprite.

One more variable also needs to be created:

(player health)

Go to the AI sprite, add this code to it:

When green flag clicked
set [player health v] to ()//Pick how much health the player has.
forever
create clone of (projectile v)
wait (pick random () to ()) seconds//Pick the amount of time in between each time the AI shoots the projectile at the player.
end

Next, go to the projectile sprite. The code for this is fairly simple.

when green flag clicked
hide
forever
go to (AI v)
end
when I start as a clone
show
point in direction ([direction v] of [AI v])
repeat until <<touching (player v)> or <touching (edge v)
move () steps
end
delete this clone

The final bit of code that is going to be added will be to the player. This script will give the player its health system.

when flag clicked
forever
	if <touching (projectile v)> then
	change [player health v] by ()
		repeat ()//This will let the player know that they've been hit by the AI's projectile.
		set [brightness v] effect to (20)
		wait () seconds
		set [brightness v] effect to (0)
        wait () seconds
	    end
	end
end

To end the game when the player has no health, just add this code to the game:

when flag clicked
forever
if <(player health) < [1]> then
stop [all v]

Secondary Method

Here is a second AI method that will detect when the player is within range of the AI. This does not use the following block:

 (distance to (mouse-pointer v)) 

Sprites/Variables needed

Like the method above, three sprites are needed. However, one of the three is going to be different: Player, AI, and a sprite that is a circle. After making the player sprite, give it the same movement code displayed up above in the first method. Only one new variable is needed:

(in radius)

Coding The AI

This time, the AI will need some new code to function like it needs to for this method. The code for the AI is still simple and it is as shown:

when green flag clicked
forever
	if <(in radius) = [1]> then
	point towards (player v)
	move (3) steps
	else
	point in direction (90)
	wait until <(in radius) = [1]
	end
end

The Radius

The circle sprite that was made earlier is the "visibility radius" for the AI. To make this function, the following code is needed:

when green flag clicked
forever
go to (AI v)
	if <touching (player v)?> then
	set [in radius v] to (1)
	else
	set [in radius v] to (0)
	end
end