Autor Wiadomość
rafaluk
PostWysłany: Pią 11:19, 02 Lis 2007    Temat postu: DropOff

Batusz!

Jak już Ci powiedziałem, kiedy chamsko szedłeś na basen wychodząc mi naprzeciwko, zrobiłem grę. Grę pt. DropOff, prawie całkowity klon komórkowego DropOff'a. Zamieściłem ją na ftp://kielbasa.za.pl, ale jakoś nie działa. Nie działają strzałki na boki (aha... no... przynajmniej wiem, dlaczego...). Dlatego specjalnie dla Ciebie pozbywam się wszelakich praw autorskich i zamieszczam kod gry na forum.

Kod:

stop();
predkosc = 10;
tajm = 0;
score = 0;
var plat_nr = 0;
var linia_nr = 0;
//
onEnterFrame = function () {
   tajm++;
   score += predkosc;
   if (score == 1000) {
      predkosc = 13;
   }
   if (score == 4000) {
      predkosc = 16;
   }
   if (score == 9000) {
      predkosc = 20;
   }
   if (score ==  13000) {
      predkosc == 25
   }
   if (plat._y<=1) {
      plat.removeMovieClip(this);
      plat_dodaj();
   }
   if (linia._y<=1) {
      linia.removeMovieClip(this);
      linia_dodaj();
   }
   if (tajm == 31) {
      tajm = 0;
   }
};
//
kulka.onEnterFrame = function() {
   if (Key.isDown(Key.LEFT)) {
      this._x -= 12;
   } else if (Key.isDown(Key.RIGHT)) {
      this._x += 12;
   }
   if (this.hitTest(plat) && !this.hitTest(linia)) {
      this._y = plat._y-30;
   }
   if (this.hitTest(linia) || !this.hitTest(plat)) {
      this._y += 10;
   }
   if (this.hitTest(ogr)) {
      this._y = ogr._y-30;
   }
   if (this._y == 0) {
      _root.gotoAndPlay(2);
      predkosc = 100000000000000000;
   }
};
//
var linia_dodaj = function () {
   linia = attachMovie("linia", "linia"+linia_nr, 1000+linia_nr);
   linia._x = plat._x+15;
   linia._y = plat._y;
   linia.onEnterFrame = function() {
      linia._y -= predkosc;
      linia_nr++;
      if (linia_nr>100) {
         linia_nr = 0;
      }
   };
};
//
var plat_dodaj = function () {
   plat = attachMovie("plat", "plat"+plat_nr, 1000+plat_nr);
   plat._x = random(550);
   plat._y = 600;
   plat.onEnterFrame = function() {
      plat._y -= predkosc;
      plat_nr++;
      if (plat_nr>100) {
         plat_nr = 0;
      }
   };
};
linia_dodaj();



Jeśli masz Flesza emiks to masz instrukcję, co należy zrobić, po kolei:

a) Włącz Flasha MX, żadnego innego.
b) Modify->Document lub CTRL+J.
c) Zmień Frame Rate na 35.
d) Na scenie narysuj koło bez obramowania, o średnicy około 60 px.
e) Teraz czas na platformy:
    -CTRL+F8, MovieClip, nazwa nie ważna

    -Narysuj linię o grubości 5 px. Długość 600, współrzędne (-643.5, 0)

    -Narysuj taką samą linię, tylko długość zmień na 565 i współrzędne na (77.5, 0)

f) Powróć na scenę i stwórz nowy MovieClip (CTRL+F8).
g) Narysuj linię o długości 25 px i x: -12.7.
h) Zaznacz ją i zmień alpha koloru na 0 (możesz też zrobić to później w ActionScripcie: nazwa_MovieClipa._alpha = 0;).
i) Powrót na scenę, nowy MC, nazwa jak zwykle byle jaka.
j) Linia o minimalnej grubości, (0, 400), Width: 550. To będzie nasz ogranicznik, by kulka po zetknięciu się z dolną ścianką nie spadała dalej w dół.
k) Powrót na scenę. Kliknij F11. Otworzy się Library (z ang. krowa) tam kliknij na jedną z pozycji, którą jest nasza kulka PPM.
l) Wybierz Linkage.
m) Zaznacz Export for Action Script i Export in first frame. Wpisz: kulka.
n) Zrób tak jeszcze z platformą, nadając identyfikator: "plat", i z naszym ogranicznikiem, którego id. musi brzmieć "ogr".

Dalej!

o) Teraz stwórz pole tekstowe w prawym górnym rogu. W panelu Properties daj mu wyrównanie do prawej i w polu Var wpisz score. Zmień typ na Dynamic Text. Obok Static Textem napisz Score:.
p) Nowa warstwa, na dół z nią, zrób jakieś byle jakie tło. Żeby biało nie było.
r) Jeszcze druga klatka z akcją stop(); z napisem przegrałeś.
s) buuuuuu

Dobra koniec, teraz objaśnienie kodu:


Kod:

stop();
// na początku dodajemy poszczególnym zmiennym dane wartości
predkosc = 10;
tajm = 0;
score = 0;
var plat_nr = 0;
var linia_nr = 0;
// zdarzenia poniższe znajdują się bloku onEnter Frame, gdyż będę wykonywane w każdej klatce, a nie tak, jak te powyższe, tylko raz
onEnterFrame = function () {
//tajm++ to to samo co: tajm = tajm + 1, czyli dodajemy cały czas do zmiennej tajm 1
   tajm++;
//W każdej klatce do score dodajemy wartość zmiennej predkość, żeby przy wyższej prędkości szybciej punkty leciały
   score += predkosc;
//jeśli score wynosi 1000, predkosc wynosi 13... itd
   if (score == 1000) {
      predkosc = 13;
   }
   if (score == 4000) {
      predkosc = 16;
   }
   if (score == 9000) {
      predkosc = 20;
   }
   if (score ==  13000) {
      predkosc == 25
   }
//jeśli pozycja na osi Y obiektu plat będzie mniejsza lub równa 1, kasujemy ją i wywołujemy funkcję plat_dodaj (zaraz będzie)
   if (plat._y<=1) {
      plat.removeMovieClip(this);
      plat_dodaj();
   }
// to samo z linią
   if (linia._y<=1) {
      linia.removeMovieClip(this);
      linia_dodaj();
   }
//Jeśli dodający się cały czas tajm dojdzie do 31, zmieniamy jego warość na 0
   if (tajm == 31) {
      tajm = 0;
   }
};
//akcje wykonywane w każdej klatce przez MC kulka
kulka.onEnterFrame = function() {
//to chyba wiesz...
   if (Key.isDown(Key.LEFT)) {
      this._x -= 12;
   } else if (Key.isDown(Key.RIGHT)) {
      this._x += 12;
   }
//jeśli dotyka plat i nie dotyka linia, Y kulki to Yplat minus 30
   if (this.hitTest(plat) && !this.hitTest(linia)) {
      this._y = plat._y-30;
   }
// || oznacza "lub"
   if (this.hitTest(linia) || !this.hitTest(plat)) {
      this._y += 10;
   }
   if (this.hitTest(ogr)) {
      this._y = ogr._y-30;
   }
//jesli kulki y bedzie 0, jedziemy do nastepnej klatki. Zwroc uwagę, że wszystkie te akcje są wykonywane dla obiektu kulka, dlatego trzeba napisać _root, czyli odnieść się do głównej sceny
   if (this._y == 0) {
      _root.gotoAndPlay(2);
      predkosc = 100000000000000000;
   }
};
//funkcja dodająca linię (spróbuj sam zdefiniować)
var linia_dodaj = function () {
   linia = attachMovie("linia", "linia"+linia_nr, 1000+linia_nr);
   linia._x = plat._x+15;
   linia._y = plat._y;
   linia.onEnterFrame = function() {
      linia._y -= predkosc;
      linia_nr++;
      if (linia_nr>100) {
         linia_nr = 0;
      }
   };
};
// podobnie
var plat_dodaj = function () {
   plat = attachMovie("plat", "plat"+plat_nr, 1000+plat_nr);
   plat._x = random(550);
   plat._y = 600;
   plat.onEnterFrame = function() {
      plat._y -= predkosc;
      plat_nr++;
      if (plat_nr>100) {
         plat_nr = 0;
      }
   };
};
//no i wywołanie funkcji na początku gry, kiedy tajm jest zerowy
linia_dodaj();




PROSZĘ!

Powered by phpBB © 2001, 2005 phpBB Group