Lav dit eget spil i JavaScript (1. del)

Tags:    javascript
Skrevet af Bruger #2416 @ 27.11.2002
Lav dit eget spil i JavaScript (1. del)

Indledning

Jeg vil i denne artikel prøve at vise hvordan man laver sit eget spil i JavaScript.
Spillet jeg vil prøve at vise hvordan man laver, er et spil der minder om snake, men det er dog uden en hale. Spillet kan findes på http://anders.java-script.dk/snake.htm
Som i kan se på siden http://anders.java-script.dk/ -> refference -> Snake. Kan i se en mere advanceret udgave af spillet.
Spillet kan dog kun køre i IE.


Hvad kræver det?

1) Du kan HTML
2) Du ved en del om JavaScript
3) Du ved en del om CSS

Hvad lære man?

Du lære at få en ting til at bevæge sig på skærmen.
Du lære hvordan man med tastaturet kan styre en ting.
Også lære du selvfølgelig at lave et simpelt spil;)

Selve spillet

Først laver vi et sted hvor vi putter alle vores variabler ind. Det gør vi ved at lave et <script></script> i head, hvor vi putter følgende i:
/*** Variabler ***/
SlangeBillede = "billede.gif" // Hvad billede skal der bruges til slangen?
SlangeBrede = 20 // Hvor bred skal slangen være? (pixel)
SlangeHoejde = 20 // Hvor høj skal slangen være? (pixel)
SlangeBredeAntal = 20 // Hvor mange gange skal slangen kunne være på breden?
SlangeHoejdeAntal = 20 // Hvor mange gange skal slangen kunne være på breden?

Derefter skal vi have lavet en box, som slangen kan bevæge sig rundt i.
Det gør vi ved at lave et nyt <script></script>, men i <body> i stedet for <head>. Hvor vi putter følgende ind:
/*** Laver box til slangen ***/
document.writeln('<div id="box" style="position:relative; width:' + (SlangeBrede*SlangeBredeAntal) + ';')
document.writeln('height:' + (SlangeHoejde*SlangeHoejdeAntal) + '; border:1px solid black;"></div>')

Nu er det så tid til at få slangen ind, det gør vi med at lave en funktion der hedder: LavSlange()
Vi tilføjer derfor følgende i <script></script> i <head>:
/*** Funktion til at lave slangen ***/
function LavSlange() {
	boxHTML = ""
	boxHTML = '<div id="slange" style="position:absolute; top: 0; left: 0;'
	boxHTML = boxHTML+'width: '+SlangeBrede+'; height:'+SlangeHoejde+';">'
	boxHTML = boxHTML+'<img src="'+SlangeBillede+'" width="100%" height="100%"></div>'
	box.innerHTML = boxHTML
}

For at få lavet slangen når man loader siden, putter vi følgende ind i body tagget:
onLoad="LavSlange();"

Nu skal vi så have slangen til at bevæge sig, det gør vi ved at sætte en timer, der hele tiden flyter slangen.
Først skal vi have lavet en variable med hvad vej slangen skal flyte sig, derfor putter vi følgende ind under variabler:
SlangeRetning = 0

Her er så fuktionen der for den til at flyte sig, som skal puttes ind i <script></script> i <head>:
/*** Funtion til at flyte slangen ***/
function FlytSlange() {
	if (SlangeRetning == 0) {
		slange.style.left = parseInt(slange.style.left) + SlangeBrede
	}
	if (SlangeRetning == 1) {	
		slange.style.left = parseInt(slange.style.left) - SlangeBrede
	}
	if (SlangeRetning == 2) {
		slange.style.top = parseInt(slange.style.top) + SlangeHoejde
	}
	if (SlangeRetning == 3) {
		slange.style.top = parseInt(slange.style.top) - SlangeHoejde
	}	

	slangeX = parseInt(slange.style.left)
	slangeY = parseInt(slange.style.top)
	if (slangeY < 0 || slangeY > (SlangeHoejdeAntal*SlangeHoejde-1)) {
		box.innerHTML = ''
		alert("Du døde!")
	} else {
		if (slangeX < 0 || slangeX > (SlangeBredeAntal*SlangeBrede-1)) {
			box.innerHTML = ''
			alert("Du døde!")
		} else {
			setTimeout('FlytSlange();',150)	
		}
	}		
}

For at få den til at begynde med at flyte slangen, putter vi følgende ind i 's onClick
FlytSlange();

Tilsidst skal vi så have gjordt så man kan styre slangen med tastaturet, som også puttes ind under <script></script> i <head>:
/*** Funtion til at styre slangen ***/
function SkiftRetning() {
	if (event.keyCode == "39") {
		SlangeRetning = 0
	}
	if (event.keyCode == "37") {
		SlangeRetning = 1
	}
	if (event.keyCode == "40") {
		SlangeRetning = 2
	}
	if (event.keyCode == "38") {
		SlangeRetning = 3
	}
}
document.onkeydown = SkiftRetning

Det var så første del af min artikel om hvordan man laver et spil. Jeg håber du kan bruge dette til at få lavet dit eget spil.
Jeg håber på at få skrevet en del 2, hvor vi gør spillet lidt mere advanceret.
Dette er min første artikel, så hvis den ikke er så god, er det nok derfor:)



Hvad synes du om denne artikel? Giv din mening til kende ved at stemme via pilene til venstre og/eller lægge en kommentar herunder.

Del også gerne artiklen med dine Facebook venner:  

Kommentarer (37)

User
Bruger #3936 @ 23.05.03 20:16
Er der nogen der har testet den?
Hvis der ikke er for mange fejl, vil jeg modificere koden lidt.
Måske kan det blive til bangbang eller Invaders?
User
Bruger #4966 @ 27.01.04 15:52
Den virker! Artiklen måtte godt være lidt mere beskrivende
User
Bruger #4966 @ 10.03.04 16:19
Glæder mig til anden halvdel kommer
User
Bruger #5766 @ 11.05.04 15:50
Citat:
"For at få den til at begynde med at flyte slangen, putter vi følgende ind i 's onClick:

FlytSlange();"
citat slut

Hvad for noget med onclick?
Jeg vil meget gerne lære at lave bare et spil som snake men kan du ikke lige forklare det lidt bedre så sådan en som mig også kan forstå det tak..

User
Bruger #6624 @ 23.10.04 20:01
jeg er selv igang med at afprøve det men jeg kan ikke finde ud af at indsætte slangen???
altså jeg har boxen men hvorfor virker scriptet til at få den ind ikke...... hvad gør jeg galt
User
Bruger #6624 @ 23.10.04 20:02
skriv svaret til min mail (hvis du nu lige kigger på din gamle artikel) :)
User
Bruger #6624 @ 23.10.04 20:03
glemt lige at skrive min mail hehe...
footballfreak@ofir.dk
User
Bruger #6850 @ 23.11.04 19:53
hmm
/*** Funtion til at styre slangen ***/
function SkiftRetning() {
if (event.keyCode == "39") {
SlangeRetning = 0
}
if (event.keyCode == "37") {
SlangeRetning = 1
}
if (event.keyCode == "40") {
SlangeRetning = 2
}
if (event.keyCode == "38") {
SlangeRetning = 3
}
}
document.onkeydown = SkiftRetning............................................................................if (event.keyCode == "37") { betyder 37 en kode for en bestem knap hvis den gør hvad er koden så for alle andre knappet f.esk hvis jeg vil bruge space til noget...?
User
Bruger #8985 @ 26.02.06 00:09
Har fået det til at virke, men hvordan styrer man slangen?? Den reagerer jo ikke på nogle af tasterne .. :S
User
Bruger #8985 @ 26.02.06 00:09
Har fået det til at virke, men hvordan styrer man slangen?? Den reagerer jo ikke på nogle af tasterne .. :S
User
Bruger #8985 @ 26.02.06 00:09
Ups, kom lige til at opdatere :D
User
Bruger #10242 @ 12.07.06 15:40
Forklaringen er ikke tydelig, men du har fået mig til at kappere, hvad det handler om. 3/5;)
User
Bruger #11215 @ 22.01.07 22:54
Heeej... Jeg er ny herinde og vil gerne igang hvordan kommer jeg til at prøve og lave mit eget spil..:):D
User
Bruger #11215 @ 22.01.07 22:58
Heeej... Jeg er ny herinde og vil gerne igang hvordan kommer jeg til at prøve og lave mit eget spil..:):D
User
Bruger #11282 @ 31.01.07 21:09
jeg ved ikke hvordan man kommer til at lave et spil:|.... mangler hjælp
User
Bruger #11822 @ 13.05.07 21:03
hej... jeg vil meget gerne prøve at lave mit eget spil.. Der er bare det problem at jeg ved ikke hvordan. kan i hjælpe mig med det ?:$
User
Bruger #11822 @ 13.05.07 21:04
hej.
User
Bruger #11822 @ 13.05.07 21:05
sorry kom til at skrive her og ikk på msn.. :S

User
Bruger #12094 @ 02.07.07 15:52
skal man bruge en hjemmeside
User
Bruger #12159 @ 14.07.07 17:03
hvordan gør man det????
User
Bruger #12159 @ 14.07.07 17:03
hvordan gør man det????
User
Bruger #12746 @ 05.11.07 19:38
tissemand.com:):):):):):):):)
User
Bruger #12746 @ 05.11.07 19:39
runescape.com er bare for sejt:lol::lol::lol::lol::lol:
User
Bruger #12746 @ 05.11.07 19:41
:evil::evil::evil:benjamin er bare for sej:evil::evil::evil::pirat::pirat::pirat::evil::evil::evil::evil::pirat::pirat::pirat::pirat:
User
Bruger #12746 @ 05.11.07 19:42
::evil:benjamin er bare for sej:evil::evil::evil::pirat::pirat::pirat::evil::evil::evil::evil::pirat::pirat::pirat::pirat:
User
Bruger #12746 @ 05.11.07 19:42
:benjamin er bare for sej:evil::evil::evil::pirat::pirat::pirat::evil::evil::evil::evil::pirat::pirat::pirat::pirat:
User
Bruger #12457 @ 24.01.08 19:44
hvad skal man bruge for at gøre det:D
User
Bruger #12457 @ 24.01.08 19:44
hvad skal man bruge for at gøre det:P
User
Bruger #13519 @ 28.03.08 15:12
hvad skal man gøre? jeg er ny:B
User
Bruger #12457 @ 20.05.08 15:18
hej

hvis i så gerne vil lave et spil og det skal være lidt nemmere så downlod game maker det finder i på www.yoyoames.com og så klik make og derefter på game maker 7
og til sidst download;)
User
Bruger #13822 @ 27.05.08 16:05
hej med jer :):pirat:
User
Bruger #14377 @ 13.11.08 15:25
hvor laver selve spillet:P:P:P:):D:B:lol::roll::roll::P:P
User
Bruger #14377 @ 13.11.08 15:29
hvor laver selve spillet:P:P:P:):D:B:lol::roll::roll::P:P
User
Bruger #14377 @ 13.11.08 15:32
:roll::roll::roll::roll::roll:hvordan hallo fister
User
Bruger #14510 @ 20.07.09 08:26
hvad sker der lige for spam i kommentar i denne artikel s:
User
Bruger #15914 @ 25.05.10 16:05
ojojo min tissemand er blå
User
Bruger #4487 @ 13.12.11 21:04
Linket til siden virker ikke... Dette er endnu en grund til ikke at inkludere links som 'dokumentation', men inkludere kildekode i en zip fil!
Du skal være logget ind for at skrive en kommentar.
t