Avatar billede heyn Nybegynder
18. februar 2008 - 15:35 Der er 6 kommentarer og
1 løsning

OOP "constructor"? Sudoku

Hej Alle

Jeg er igang med at lave et sudoku-spil, men vil helst holde mig mest muligt ude af php-kald.
Jeg har et array felter[0 - 81] der repræsenterer værdierne i spillepladens felter.
Nu skal jeg lave 3 2-dim array raekker[0 - 8][0 - 8], kolonner[0 - 8][0 - 8] og kvadrater[0 - 8][0 - 8].
kolloner[3][4] indeholder f.eks. værdien af tallet i 4. kolonne, 5. tal fra oven.
Nu ville det jo være praktisk hvis felter var en serie af 81 objekter, og at raekker, kolonner og kvadrater indeholdt disse objekter istedet for tal-væerdier. På den måde ville en forandring af objektet ét sted medføre at det ændredes overalt.

Er det muligt at oprette denne type af OO-objekter?
Skal man anvende funktionen "constructor", og hvordan?

Mvh Christian
Avatar billede heyn Nybegynder
18. februar 2008 - 20:49 #1
Jeg har fundet en foreløbig løsning med følgende funktion:

function FeltClass(_value){
  this.value = _value;
}

og derefter:

for (i=0;i<81;i++) felter[i] = new FeltClass(0);

Man kan vel nærmest kalde FeltClass() for en slaks constructor.
Men det rejser jo det nærliggende spørgsmål:
Kan jeg også oprette funktioner tilhørende 'klassen' FeltClass()? Altså således at jeg kan skrive

felter[i].enFunktion();

Desuden ved jeg endnu ikke hvad kaldet "constructor" anvendes til.
Avatar billede roenving Novice
18. februar 2008 - 23:38 #2
I javascript skal du ikke bruge ordet 'constructor', men et kald som du viser er i praksis et kald til en funktion, der fungerer som en constructor til medlemmer af den klasse !-)

-- funktioner kan enen prototypes eller skrives direkte ind i constructoren som anonym funktion:

FeltClass.prototype.marker(){
  this.style.backgroundColor = "#a22";
}

-- eller:

function FeltClass(_value){
  this.value = _value;
  var me = this;
  this.marker = function(){
    me.style.backgroundColor = "#a22";
  }
}

-- som så kan kaldes med: felter[62].marker();

-- eksemplet er selvfølgelig et tænkt eksempel, da objektet jo ikke dækker et html-element, men jeg håber, du kan se ideen !o]
Avatar billede heyn Nybegynder
19. februar 2008 - 10:39 #3
I see. Fedt nok.

Grunden til alt det med "constructor" skal søges i at jeg kikkede på den, ellers gode side, http://www.devguru.com/technologies/JavaScript/index.asp , og jeg fattede, og fatter stadig, ikke en sk*d. Jeg troede det havde noget med OO at gøre.

Mvh Christian

P.s. Smider du et svar?
P.p.s. Hvad vil det sige at være "Pro medlem"?
Avatar billede heyn Nybegynder
19. februar 2008 - 11:55 #4
Og så alligevel ikke helt forstået.

Hvad anvendes "me" til. Er "this" ikke godt nok?
Avatar billede roenving Novice
19. februar 2008 - 12:03 #5
Nej, for funktionen er anonym og koden køres, når den kaldes uden egentlig kendskab til objektet, derfor en variabel med et begrænset scope, der kan overføres til den !-)

-- bemærk i devgurus side, at constructor er listet som en property på et objekt og altså ikke er en constructor, men en måde at henvise til objektets constructor-kode ...

Pro-medlemskab er en slags fordels-abbonnement, hvor du lige får mulighed for at stille lidt mere på dine muligheder, se http://www.eksperten.dk/pro.phtml !o]

-- els velbekomme '-)
Avatar billede heyn Nybegynder
19. februar 2008 - 12:16 #6
Ah - nu ser jeg det.

Hilsen Christian.
Avatar billede roenving Novice
19. februar 2008 - 12:51 #7
Tak for point ;~}
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB

Ringkjøbing Landbobank – Nordjyske Bank

Forretningsudvikler til procesoptimering

Capgemini Danmark A/S

Open Application (Denmark)

AL Sydbank A/S (tidligere Arbejdernes Landsbank)

Afdelingschef til GDPR & Tech Regulation