Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  6 1043
Hei

Jeg holder på å programmere et spill hvor jeg har x antall objekter som skal bevege seg vannrett bortover skjermen. For hver gang objektene blir sendt ut, skal de ha tilfeldige y-verdier.

Kode

var fart:int = 5;

var objektArray:Array = new Array(a, b, c, d);
a.y    = (stage.stageHeight - 80) * Math.random();
b.y    = (stage.stageHeight - 80) * Math.random();
c.y    = (stage.stageHeight - 80) * Math.random();
d.y    = (stage.stageHeight - 80) * Math.random();
addEventListener(Event.ENTER_FRAME, flyttObjekt);
function flyttObjekt(evt:Event){
	for(var i:int = 0; i < 3; i++)
	{
		var rand:int=int(Math.random()*4);
		resirkulerObjekt(objektArray[rand]);
	}

function resirkulerObjekt(tilfeldigObjekt:MovieClip):void 
{
	tilfeldigObjekt.x -=fart; 
	
	if(tilfeldigObjekt.x < 0)
	{
		tilfeldigObjekt.x = stage.stageWidth;
	}
}
}
Når objektene når en viss x-verdi forsvinner de og blir sendt ut på nytt. Problemet er da at de starter på samme y-verdier som første gangen de blir sendt ut.

Kan noen si meg hva jeg gjør feil?
Du oppretter objektene en gang, med en gitt Y-verdi. La oss si at Y = 0. Når objektene blir resirkulert (tilfeldigObjekt.x < 0) endrer du aldri Y-koordinaten, slik at den alltid vil være 0. Det betyr at hver gang du setter tilfeldigObject.x = stage.stageWidth, må du også endre Y-koordinaten til en tilfeldig verdi, slik du gjør når du oppretter objektet.
Sist endret av hosjmeister; 7. desember 2012 kl. 11:22.
Synes dette var en svær tungvindt måte å faktisk gi den en tilfeldig x verdi på. Kan jo implementere dette rett i objektet?
Tusen takk!

Med en gang du nevnte det, virker det så åpenbart at jeg ikke skjønner hvordan jeg kunne la være å se...

Sitat av Foxboron Vis innlegg
Synes dette var en svær tungvindt måte å faktisk gi den en tilfeldig x verdi på. Kan jo implementere dette rett i objektet?
Vis hele sitatet...
Jeg er nybegynner på programmering. Det er sikkert mye jeg kunne gjort bedre med den koden.

Kan du f.eks vise meg hvordan? Eller link til noen sider som nybegynnere forstår?(har søkt uten mye hell)
Objektorientert programmering innebærer å modelere virkeligheten som objekter i kode. Det vil si at om du ser på en bil kan den f.eks ha en farge, merke, modell etc. Dette blir egenskaper for bilen. En bil kan sannsynligvis også kjøre. Det er en funksjon. En type er en slags mal på hvordan et objekt skal se ut. Et objekt er en instans av en eller annen type. Vi kan si at typen til et punkt er (x,y) og punktet (1,3) er en instans av typen punkt. I et program kan vi si noe som "Punkt p = nytt Punkt(1,3)".

I et program velger vi de egenskapene og funksjonene et objekt i den virkelige verden og definerer en type i programmet som tilfredsstiller disse kravene. I mange programmeringsspråk er blir både egenskaper og funksjoner definert ved hjelp av metoder. Vanligvis er egenskapene metoder som henter eller setter en verdi på objektet, mens funksjoner er metoder som utfører en operasjon på en eller flere av dataene i klassen.

siden jeg ikke kan AS3 har jeg skissert ned noe veldig generelt

Kode

//Definisjon på typen TilfeldigObjekt
klasse TilfeldigObjekt
	//Posisjonen til hvert enkelt objekt
	Punkt posisjon
	//bilde som skal tegnes på skjermen
	Bilde bilde
	// farten objektet skal bevege seg med
	Vektor fart
	
	//Kode som skal gjennomføres hver gang vi lager et nytt objekt av denne typen.
	Konstruktør: TilfeldigObjekt(xKoordinat, bilde)
		posisjon = nytt Punkt(xKoordinat, rand())
		bilde = bilde
		fart = ny Vektor(5,0)

	Metode: tegn()
		bilde.tegn(posisjon)
	
	Metode: oppdater()
		hvis kolliderer?()
			posisjon = nytt Punkt(0,rand())
		ellers
			posisjon = nytt Punkt (posisjon.x + fart.x, posisjon.y + fart.y)

	Metode: kolliderer()
		posisjon.x == sceneBredde

//Da kan spillet være noe alá

objekter = nytt array
for i = 1 til 5
	objekter[i] = nytt TilfeldigObjekt()

så lenge spillet kjører
	for hvert tilfeldigobjekt o i objekter
		o.oppdater()
		o.tegn()
Takk lor3ntz, ble litt klarere nå
Sitat av Turrist Vis innlegg
Tusen takk!

Med en gang du nevnte det, virker det så åpenbart at jeg ikke skjønner hvordan jeg kunne la være å se...



Jeg er nybegynner på programmering. Det er sikkert mye jeg kunne gjort bedre med den koden.

Kan du f.eks vise meg hvordan? Eller link til noen sider som nybegynnere forstår?(har søkt uten mye hell)
Vis hele sitatet...
Vet ikke hvor langt du har kommet. Men tar du en titt på kapittel... 11 eller 12 i læreboka (antar du har IT2) så står det hvordan du lager klasser og kan bruke de i eksempler