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

Игра "Змия"

Игра "Змия"




Поредицата на 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

Добави коментар

Трябва да сте регистиран потребител за може да оставяте коментари! Направете своята безплатна регистрация още сега.