Яндекс.Метрика
Уроки по flashВ данной категории будут публиковаться уроки по созданию flash - игр 

Игра совпадений

 

1 Этап. "Подготовка"

В игре будут используется только два библиотечных элемента. Первый -  клип в первом кадре которого представленна рубашка карты. В остальных содержаться картинки. Т.е. у нас получиться первый кадр с изображением картинки с номером 9, а все остальные будут фотографии учеников 9 класса.

 Давайте создадим мувик в котором они будут храниться, щелкаем по клавише ctrl + F8 выбираем  Movie Clip  называем данный  мувик    например card. Далее находим созданный клип в библиотеке щелкаем правой кнопкой мыши по нему и выбираем Linkage и прописываем название переменной Card. 

Далее распологаем  нужные нам клипы в следующем порядке

 Обратите внимание что третий последний слой Button содержит кнопку.  У этой кнопки внутри клипа "Cards" только одна строчка кода, которая передает основной временной шкале информацию о том, что по клипу щелкнули.

   on (press) {
    // сообщение главной временной шкале о том что произошел щелчек
    _root.clickCard(this);
     }

 

Далее заканчиваем редактирование клпа card, закрываем его так чтобы данного клипа не было на главной сцене.

 

Далее возвращаемся на основную временную шкалу и создаем четыре слоя  

1 слой назовем Счет очков - на нем будет находиться основной код игры и будут выводиться подсчет очков.

Щелкаем по третьему кадру открываем Actions  и вставляем следующий код:  

initGame();
stop();
score1=18;
showScore.text = "Осталось открыть пар:"+score1;
clik=0;
kardclik.text = "кол-во не угаданных пар:"+clik;
max=0;
maxpar.text = "max подряд:"+max;
parr=0;
parclik.text = "Открытые подряд пары:"+parr;
ochki=0;
ochki2=0;
ochki3=0;
ochki22=0;
schet.text = "Ваши очки:"+ochki;
function initGame() {
    // создаем отсортированный список карт
    cardsListOrdered = [];
    for(i=1;i<=18;i++) {
        cardsListOrdered.push(i,i);
    }

    // список перемешенных карт
    cardsListSorted = [];
    while (cardsListOrdered.length > 0) {
        r = int(Math.random()*cardsListOrdered.length);
        cardsListSorted.push(cardsListOrdered[r]);
        cardsListOrdered.splice(r,1);
    }

    // создаем клипы карт  и определяем их положения и картинки
    x = 0;
    y = 0;
    for(i=0;i<36;i++) {
        attachMovie("Card","Card"+i,i);
        _root["Card"+i].picture = cardsListSorted[i];
        _root["Card"+i]._x = x*60+200;
        _root["Card"+i]._y = y*60+50;

        // переходим к следующей карте
        x++;
        if (x > 5) {
            x = 0;
            y++;
        }
    }

    firstclip = 0;
}

function clickCard(clip) {
    // проверяем отображены ли две карты
    if (secondclip != 0) {

        // располагаем эти две карты рубашками вверх
        firstclip.gotoAndStop(1);
        secondclip.gotoAndStop(1);
        
        firstClip = 0;
        secondClip = 0;
        
    }

    // проверяем щелкнул ли пользователь дважды
    // по одной и тойже карте
    if (firstclip == clip) {

        // переворачиваем карту
        firstclip.gotoAndStop(1);
        firstClip = 0;
        
    // выесняем есть ли хоть одна перевернутая карта
    } else if (firstclip == 0) {

        // проверяем первую карту
        clip.gotoAndStop(clip.picture+1);
        firstclip = clip;

    // одна карта должна быть перевернута
    } else {

        // переорачиваем вторую карту
        clip.gotoAndStop(clip.picture+1);
        secondClip = clip;

        // проверяем совпадают ли две карты
        if (firstclip.picture == secondClip.picture) {

            //удаляем обе карты
            firstClip.removeMovieClip();
            secondClip.removeMovieClip();
            firstClip = 0;
            secondClip = 0;
            score1--;
            ochki1++;
            
            showScore.text = "осталось открыть пар:"+score1;
            parr++;
            parclik.text = "Открытые подряд пары:"+parr;
            if (parr>max){
                max=parr;
                maxpar.text = "max подряд:"+max;
                
                }
                
            else {
                maxpar.text = "max подряд:"+max;}
        if (max>1){
                    ochki2=2*max;}
        }
        else {
            clik++;            
            kardclik.text = "кол-во не угаданных пар:"+clik;
            if (clik>36){ochki3=clik;}
            parr=0;
            parclik.text = "Открытые подряд пары:"+parr;
            }
            
    
        
    }ochki=ochki1+ochki2-ochki3/18;
        schet.text = "Ваши очки:"+ochki;
    if (score1 == 0){
        gotoAndStop(4);}    
        
        score=ochki;
}

  

 2. В 3 слой  "Кнопка и фон "  вставляем фон который будет показываться после открытия всех карт

3. Далее в первом слое "счет очков"  создаем 5 динамических текстовых поля, которым присваиваем

следующие переменные:

1 текстовое поле будет вести подсчет сколько осталось еще открыть пар,

присвоем ему переменную  showScore.

2 текстовое поле будет считать сколько не верных пар открыто

и будет иметь переменную kardclik 

3. поле будет считать количество подряд открытых пар  parclik

4. поле будет выводить сколько максимально пар было открыто подряд  maxpar

5. поле будет выводить окончательные очки и будет иметь переменную  schet

очки будут подсчитываться ochki=ochki1+ochki2-ochki3/18

где  ochki1 - количество открытых пар

      ochki2 - повторно открытых пар

      ochki3 -  количество не угаданных пар, будет отниматься начиная с 36 несовпадения

 

 Скачать исходник 

 
<< Start < Prev 1 2 3 4 Next > End >>

Page 4 of 4