Преглед на урок

Игра "Змия"
Поредицата на Studio-bg.com за правене на игри продължава!
Сега бързо и лесно ще си направим една игра, която е позната на всеки от нас. Има я по телефони, електронни игри и т.н. Сега ще я направим с помощта на Flash!
И така, да започваме!
1. Отворете нов документ 300х350.
2. В Document Properties нагласете Frame rate на 12. (Ако желаете да вдигнете динамиката в играта, увеличете числото :))
3. Дайте Rectangle Tool и начертайте правоъгълник по цялата дължина на екрана. Старайте се да съвпаднат.
4. Сменете цвета по желание:

5. Сега задайте Text Tool. Напишете текста "Click to Start" (Dynamic text долу в Properties!) и го поставете в празното пространство под "игралното поле", което е добре да сте оставили.

6. Сега натиснете Ctrl + F8. Нагласете както е посочено:

7. Сега вземете пак инструмента за чертаене на правоъгълници и начертайте квадратче в средата. Това ще е частта на нашата змия, която ще се увеличава, когато "изяде" храната. :) Подравнете квадратчето, като зададете следните характеристики в Properties:
W: 15
H: 15
X: 0
Y: 0
8. Върнете се назад, като натиснете Scene 1. Дайте пак Ctrl + F8! Вземете Oval Tool и нарисувайте кръгче. Озаглавете символа food. Подравнете в Properties:
W: 15
H: 15
X: 0
Y: 0
9. Пак натиснете Scene 1. Кликнете на Frame 1 и задайте F9 (Actions). Въведете следния код там:
var unit = 15;
var uwh = 20;
var canMove = false;
var dir = 2;
var score = 0;
aPieceList = new Array();
mouseListener = new Object();
mouseListener.onMouseDown = function()
{
if (!canMove)
{
canMove = true;
startGame();
}
};
Mouse.addListener(mouseListener);
k = new Object();
k.onKeyDown = function()
{
var k = Key.getCode();
if (k == Key.UP && dir != 2 && canMove)
{
dir = 0;
canMove = false;
}
else if (k == Key.LEFT && dir != 3 && canMove)
{
dir = 1;
canMove = false;
}
else if (k == Key.DOWN && dir != 0 && canMove)
{
dir = 2;
canMove = false;
}
else if (k == Key.RIGHT && dir != 1 && canMove)
{
dir = 3;
canMove = false;
}
};
Key.addListener(k);
function addPiece()
{
var p = this.attachMovie("piece", "piece" + aPieceList.length, aPieceList.length);
p._x = aPieceList[aPieceList.length - 1]._x;
p._y = aPieceList[aPieceList.length - 1]._y;
aPieceList.push(p);
}
function moveFood()
{
var moveIt = true;
while (moveIt)
{
food._x = Math.floor(Math.random() * uwh) * unit;
food._y = Math.floor(Math.random() * uwh) * unit;
moveIt = false;
for (var i = 0; i < aPieceList.length; i++)
{
if (aPieceList[i]._x == food._x && aPieceList[i]._y == food._y)
{
moveIt = true;
}
}
}
}
function gameOver()
{
delete this.onEnterFrame;
tScore.text = "You Lose. Score: " + score;
canMove = false;
}
function startGame()
{
for (var i = aPieceList.length - 1; i >= 0; i--)
{
aPieceList[i].removeMovieClip();
aPieceList.pop();
}
score = 0;
var p = this.attachMovie("piece", "piece" + aPieceList.length, aPieceList.length);
aPieceList.push(p);
p._x = 10 * unit;
p._y = 10 * unit;
var food = this.attachMovie("food", "food", -1);
var c = 0;
moveFood();
var startingLength = 3;
for (var i = 1; i < startingLength; i++)
{
addPiece();
}
this.onEnterFrame = function()
{
canMove = true;
tScore.text = score;
for (var i = aPieceList.length - 1; i > 0; i--)
{
aPieceList[i]._x = aPieceList[i - 1]._x;
aPieceList[i]._y = aPieceList[i - 1]._y;
}
if (dir == 0)
{
aPieceList[0]._y -= unit;
}
else if (dir == 1)
{
aPieceList[0]._x -= unit;
}
else if (dir == 2)
{
aPieceList[0]._y += unit;
}
else if (dir == 3)
{
aPieceList[0]._x += unit;
}
if (aPieceList[0]._y / unit == 20)
{
aPieceList[0]._y = 0;
}
else if (aPieceList[0]._y / unit == -1)
{
aPieceList[0]._y = 19 * unit;
}
else if (aPieceList[0]._x / unit == -1)
{
aPieceList[0]._x = 19 * unit;
}
else if (aPieceList[0]._x / unit == 20)
{
aPieceList[0]._x = 0;
}
if (aPieceList[0]._x == food._x && aPieceList[0]._y == food._y)
{
score += 10 * aPieceList.length / 2;
moveFood();
addPiece();
}
for (var i = 1; i < aPieceList.length; i++)
{
if (aPieceList[0]._x == aPieceList[i]._x && aPieceList[0]._y == aPieceList[i]._y)
{
gameOver();
}
}
};
}
10. Вярвате или не, вече сме абсолютно готови! Можете да дадете Ctrl + Enter, за да видите крайния резултат!
Ето какво излезе при мен:
Надявам се, урокът да ви е харесал! Следващата игра, която ще ви представя ще бъде Tetris! Очаквайте много скоро!
Взаимствано от: www.Tutorialoutpost.com
Ако урокът ви допада, споделете го в Twitter и Facebook или го запазете в Delicious.
Урокът е добавен от: bubsss
Коментари
niki72007
При Мен Не Става..
malina0707
[17:03:27] graf_kaberne: http://www.swfcabin.com/open/1266067782
niki72007
И Отново..!НЕСТАВА!
John Front
Не става и при мен....
Точките не излизат,храната и част от змията излизат извън рамката!
John Front
Ето тук са го описали по-разбираемо.Естествено, който знае английски де...
http://active.tutsplus.com/tutorials/games/build-a-classic-snake-game-in-actionscript-2-0/
blatoplam
Направих всичко което е написано ,но защо не ми излиза храната а само змията?
niki72007
Става Ми =]!
blatoplam
Пробвах няколко пъти отново не става!!!! Излизат ми само змията и храната но не и точките!!!!!
s0me1
http://store5.data.bg/andreimihailovsmexxx/Snake.swf
Защо така като цъкам нагоре и надолу се маха и появява надписа "Play", а не показва "Score" :((
Geckata
Супер е 1-ят урок ми е и го направих супер :)
She's a vampire
Ее, нямам Флаш, ама тука малко поцъках на игричката - 26 точки ;D
Добави коментар