Javascript artikel

Tags:    html css

<< < 12 > >>
Jeg vil da lige dele de sidste 45 minutters "arbejde" med jer. Både kode og artikel er noget jeg har skrevet lige nu, så det ser sikkert ikke særlig prof ud.

Anyhow, hvis der er spørgsmål eller rettelser, kan de jo lige så godt komme med det samme, så der ikke kommer flere med samme spørgsmål...





Wassup! Her kommer super artiklen om, hvordan du laver dit eget lille spil i Javascript!

Du har programmeret Javascript før!(Eller kan i det mindste finde ud af at læse det) Og du kender også CSS!
Hvis ikke, så kan du lige så godt skippe artiklen..

Spillet! Det kommer til at være super simpelt! Ja, du gættede rigtigt: Vi skal lave ping pong.

Åben din favorit editor, og gør dig klar på at lære en hel masse, hvis aldrig har lavet dit eget ping pong spil før..

Lad os starte - og NEJ ikke med kode. Først opsummeres der kort, hvad der skal laves:
- En bane/ramme.
- To ping-pong'ere. (Hvad hedder de egentlig?? - Det er dem som er ude i siden)
- En bold.
- Et scoreboard til mål.
- En "tråd" som holder spillet i gang.

Fair nok! Vi er jo allerede i gang. En ping-ponger laves som et <div> med en hvid baggrund, og en rød/blå kant. Bolden er firkantet og helt hvid. Selve rammen er også en div - bare med sort baggrund.

Så kommer koden endelig:
Fold kodeboks ind/udKode 

Hvis du ikke kan læse og forstå koden ovenover, så er artiklen ikke for dig. (Eller også har jeg bare lavet en mega bummert..)

Som du nok kan se bliver alt skrevet på engelsk og med "den grimme kodestil".. (Det er utroligt så mange vaner der kan ændres på arbejdet.)

Vi skal selvfølgelig også lidt videre. Vi skal have udfyldt funktionerne createField, createPingPongers og createBall. Derfor gør vi brug af funktionen: document.createElement(tagName); og indsætter den med document.body.appendChild(objekt);

Banen kommer til at være helt sort og være 500x300, i en position (50,50). Derfor laver vi følgende kode:
Fold kodeboks ind/udKode 


Lad os da lige se, hvad der sker:)
field.style.position = 'absolute'; Sætter css's position til absolute.
field.style.left, field.style.top, osv. gør cirka det samme, og så er det bare at læse lidt engelsk for at forstå hele koden. (Note zIndex=z-index er hvilken placering elementet har. Hvis den har en lav z-index ligger den bag alle elementer med en højere z-index)

field = document.createElement("div");
Er lidt mere spændende. Den opretter et <div>-element, men placerer det ikke nogen steder! Det betyder at vi bare har det i vores Javascript-kode og kan placere det med appendChild.

document.body.appendChild(field);
Her lægges field-objektet, som vi oprettede før, ind i body-tagget. (Alt der kan ses ligger indefor <body>-tagget) Det betyder simpelt hen bare at vi nu faktisk kan se vores bane. Wow, hvor sejt!!

Læg funktionen ind i html-filen, og nyd synet inden du går videre..

Nu gør vi det samme med pingpong'erne, og bolden. Vi bestemmer at bolden er 10x10 og pingpong'erne 10x70. Desuden skal pingpong'erne være 10px fra kanten, og ellers i midten af banen. Bolden skal være lige i midten.
Farverne er således: Alle tre er hvide, men pingpong'erne har en kant. (Til venstre rød og til højre blå)
Bemærk at vi sætter z-index til 10.

Note: Vi skal huske at sætte ball.style.fontSize = '1px'; Ellers vi boldens font automatisk udvide bolden og gøre den aflang, hvis den er højere end 10px.

Hvis du bare vil have det hurtige svar, så er det her: (Ellers skal jeg nok vente på dig:))
Fold kodeboks ind/udKode 


Juhuu! Første del er overstået, og nu kommer vi til det sjove.
Anden del er at registrere tastetryk!

Det betyder at vi gerne vil registrere hvornår vi trykker ned og op. Det gør vi ved at tilføje to nye funktioner keyup(e) og keydown(e), samt at tilføje dette til init() funktionen:
Fold kodeboks ind/udKode 


SLUT indtil videre.

Kode:
Fold kodeboks ind/udKode 




Kan du ikke tilføje den under artikler i stedet for at lave et forum post!



Kan du ikke tilføje den under artikler i stedet for at lave et forum post!

Hvorfor ville det være bedre? Jeg ser en hel del fordele i at ligge den her i stedet.



Må man hører hvilke? :P



den forsvinder hurtigere.

I øvrigt er det eneste javascript man lære i det du har skrevet vel nærmest kun en sikker måde at sætte onload på og hvordan man laver HTML elementer i javascriptt og indsætter dem i siden.



den forsvinder hurtigere.

For eksempel:)

Og så får jeg nogen brugbare kommentare. Jeg har bare tænkt en tanke og så skrevet det ned, og nu kan jeg f.eks. godt se at der ikke er særlig meget Javascript med i selve artiklen. (Det er ikke sikkert jeg ville have set det selv)

Ud over det, så er det ikke sikkert at den nogensinde bliver færdig, så hvis nogen bliver inspirreret, er de velkommen til at kopiere det jeg har skrevet og lave deres egen artikel.



Jeg synes at ideen om at "udvikle" artiklen i forummet er meget sjov, og interessant måde at få skrevet en god artikel. Bare du sørger for at lægge den op som en "rigtig" artikel når du er færdig. Så fortsæt arbejdet :)



Har lige et enkelt spørgsmål: Er der nogen perfomance problemer med at skrive:
Fold kodeboks ind/udKode 

i stedet for
Fold kodeboks ind/udKode 







Hej Mathias,

Jeg glæder mig til at prøve det og se nogle flere taste funktionaliteter i spillet. Ellers ser det jo godt ud til JavaScript/HTML manipulering.

Nice nok, og tak for delingen af det. Laver du mere på det snart?

Med venlig hilsen
Ieet





Lavede det her, kører kun i Firefox da jeg ikke lige kunne finde ud af hvordan man attachede "class function" til
events i IE.
Fold kodeboks ind/udKode 




Det ser super sejt ud!
Jeg går i seng nu, men jeg kigger på det i morgen og laver da også lige et udkast til en artikel! Igen. Nice:)



<< < 12 > >>
t