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.
  2 1271
Dataingeniør
Zarlach's Avatar
Hei, jeg tenkte på å lage et program i Flash Pro med Actionscript (Kan ikke noen andre språk som passer til dette prosjektet enda). Dette programmet skal simulere tidsreising hvor man reiser i tid for å se endringer av et objekt.

For eksempel hvis jeg går 10minutter inn i tid, for å legge ut en firkant (graphic) for å så gå tilbake og venter 10 minutter før den plutselig dukker opp.

I starten hørtes ideen min ut som en enkel oppgave, men ettersom jeg gikk mer inn i det ser jeg at det kan bli mer og mer avansert for å holde oversikt over hvor en forkant, eller flere firkanter, er til enhver tid og når de skal dukke opp og forsvinne.

Er det noen som har prøvd dette? Jeg tenker at det mest utfordrene er å sette opp et system med informasjon for hvert objekt jeg legger inn.

Første jeg tenkte på var en hel haug med Arrays. Så er det å lage en funksjon som sjekker hvor firkanten(e) er og om de(n) i det hele tatt eksisterer hvert sekund. (Funksjonen må også sjekke med den tiden man er i, som lagres i en Array eller variabler)

Har ikke tid til å begynne å teste før på torsdag, så det hadde vært fint med noen ideer før jeg prøver meg. Jeg er ingen ekspert i Actionscript. Startet for ca. 4-5 måneder siden men føler jeg har oversikt over logikken i programmering fra PHP.
Sist endret av Zarlach; 28. januar 2013 kl. 23:18.
m0b
m0b's Avatar
DonorAdministrator
Tja, så veldig avansert bør det vel ikke være. Du trenger å vite hva nåværende tid er, og du trenger å holde øye med når et objekt skal kunne begynne å eksistere i tid.

I tillegg så kan det være greit å samle alle objekter i ett og samme array. Du oppretter en hovedklasse som har grunninformasjonen, og lager nye klasser for forskjellige typer ting (firkant, kube, etc) basert på hovedklassen (arv).

Nå kan jeg ikke ActionScript, men antar det finnes tilsvarende klasser der som i PHP siden det er det jeg kan av AS og PHP. Har skrevet et veldig kjapt og enkelt eksempel som viser output i konsoll. Har ikke tatt noe spesiell høyde for at dette skal være (kode)designmessig korrekt, men heller vise hvordan du samler objekter av forskjellig type i ett og samme array og hvordan du enkelt kan implementere simuleringen i forhold til når de skal eksistere. Det er også mange andre måter du kan gjøre dette på, blant annet at i stedet for å opprette objektene og legge de inn med en gang, så kan du lage instrukser på de tidspunktene som du ønsker at noe skal opprettes og opprette objektene der og da.

Begynn med å lese metoden "runSimulation", og så leser du deg inn i hver av metodene som er brukt der.

https://gist.github.com/a3bff076b36ee73ab0e3

Kode

<?php

abstract class renderObject
{
	// Hvilken type objekt dette er
	protected $type;

	// Når skal objektet begynne å eksistere i tid
	protected $spawnWhen;

	// Dette vil typisk være en rendermetode,
	// Dersom det er forskjellige ting som må gjøres ut i fra hvilket objekt det er snakk om
	// Så kan denne settes til abstract og implementeres i de arvede klassene
	public function printType()
	{
		echo "A " . $this->type . "\n";
	}

	public function getType()
	{
		return $this->type;		
	}

	public function whenWillISpawn()
	{
		return $this->spawnWhen;
	}

	public function shouldSpawnAt( $seconds )
	{
		$this->spawnWhen = $seconds;
	}
}

class cubeObject extends renderObject
{
	public function __construct()
	{
		// Sett objekttypen
		$this->type = "Cube";
	}
}

class squareObject extends renderObject
{
	public function __construct()
	{
		// Sett objekttypen
		$this->type = "Square";
	}	
}

// Si ordet "tidsmaskin" til en engelskmann. Hirr
class titsMachine 
{
	// Nåværende tid
	private $currentTime;

	// Samlingsarray for alle objekter
	private $objects;

	public function __construct()
	{
		// Opprett array for alle objekter
		$this->objects = array();

		// Nåværende tid for simulator
		$this->currentTime = 0;
	}

	public function whatTimeIsIt()
	{
		echo "Current time is " . $this->currentTime . "\n";
	}

	public function travelToTime( $seconds )
	{
		echo "Warps to " . $seconds . "\n";
		
		// Reis i tid
		$this->currentTime = $seconds;
	}
	
	public function printObservableObjects()
	{
		echo "Existing objects at time " . $this->currentTime . "\n";

		// Loop igjennom alle objekter i objektarrayet og sjekk om nåværende tid er høyere eller lik 
		// tiden for når objektet skal eksistere
		foreach ($this->objects as $key => $value) 
		{
			if( $value->whenWillISpawn() <= $this->currentTime )	
			{
				$value->printType();
			}
		}
	}

	public function placeObject( $object )
	{
		echo "Placing object " . $object->getType() . " in time " . $this->currentTime . "\n";
		
		// Sett tidspunktet objektet skal eksistere fra og legg til objektet i objektarray
		$object->shouldSpawnAt( $this->currentTime );
		$this->objects[] = $object;
	}

	public function runSimulation()
	{
		// Print ut hva klokken er
		$this->whatTimeIsIt();
		
		// Legg inn et objekt i nåværende tid (0)
		$this->placeObject( new squareObject() );

		// Se hvilke objekter som eksisterer i denne tiden
		$this->printObservableObjects();

		// Reis framover i tid og legg objektet i framtiden (5)
		$this->travelToTime( 5 );
		$this->placeObject( new cubeObject() );

		// Reis tilbake i tid
		$this->travelToTime( 0 );

		// Se hvilke objekter som eksisterer i denne tiden (0)
		$this->printObservableObjects();

		// La tiden gå, og print ut hvert objekt som kan sees
		for( $i=0; $i<10; $i++ )
		{
			$this->currentTime++;
			$this->printObservableObjects();
		}		
	}
}

$tits = new titsMachine();
$tits->runSimulation();

?>
Utput

Kode

Current time is 0
Placing object Square in time 0
Existing objects at time 0
A Square
Warps to 5
Placing object Cube in time 5
Warps to 0
Existing objects at time 0
A Square
Existing objects at time 1
A Square
Existing objects at time 2
A Square
Existing objects at time 3
A Square
Existing objects at time 4
A Square
Existing objects at time 5
A Square
A Cube
Existing objects at time 6
A Square
A Cube
Existing objects at time 7
A Square
A Cube
Existing objects at time 8
A Square
A Cube
Existing objects at time 9
A Square
A Cube
Existing objects at time 10
A Square
A Cube
Sist endret av m0b; 30. januar 2013 kl. 19:57.
Dataingeniør
Zarlach's Avatar
Trådstarter
Tusen takk, |d13m0b!

Jeg ser at noe av koden ligger litt over det jeg kan. Jeg kan innrømme at jeg i løper av flere år med PHP aldri har vært borti classes, mest fordi jeg ikke har forstått hva de brukes til. Men dette gjaldt også functions, før jeg faktisk prøve det og forstod hvor mye lettere det ble å programmere.

Dette blir lærerikt