Multidesk.be » Forums » Java » JButtons array vullen met letters

  • Pagina
  • [1]
  • 2
0 gasten lezen dit onderwerp.
^ Onderwerp geschreven door BoeMan op maandag 12 maart 2012 om 04:21:40.
BoeMan heeft nog geen avatar toegevoegd
Multiviteit: 154
Beste,

ik heb op school de opdracht gekregen het spel Lingo te programmeren met een grafische layout. Ik heb hierbij wel een groot probleem. Ik kan wel een 2 dimensionale JButton array van 5 x 5 kaders genereren bij het opstarten van het spel. Maar nu moet daar elke gokbeurt een woord van 5 letters in ingevuld worden en ik heb geen idee hoe ik deze letters er in ga krijgen.

De JButton array is met deze code aangemaakt:
PHP
  1.  
  2.         btnbordblok = new JButton[5][5];
  3.         for (int i = 0; i < 5; i++) {
  4.             for (int j = 0; j < 5; j++) {
  5.                 btnbordblok[i][j] = new JButton(".");
  6.             }
  7.         }
  8.  


mijn woord wordt uit een tekstveld gehaald en dit is al gecontroleerd op de lengte.

Dit is het uitzicht van mijn bord/spel.


Bijlage: 0715113506262c9d75d3d826ff4e0d3d.jpg

Mijn excuses voor de php tags, ik had geen idee hoe ik het er anders moest inzetten :)

Mvg Gijs
^ Reactie #1 geschreven door thekid op maandag 12 maart 2012 om 11:44:36.
thekid's avatar
Multiviteit: 5273
Moderator
nu mijn java is serieus achterhaald

maar als je logisch nadenkt:
-> je dient te onthouden op welke rij je momenteel staat (eventueel als property in uw game klasse)
-> je overloopt het ingegeven woord karakter per karakter, iedere positie komt nl overeen met de button in de rij

dus in pseudo code

CODE
  1.  
  2. class Game
  3. {
  4.   var btnBordBlock = [];
  5.   var currentRow = 0;
  6.   var maxrows = 5, maxcolums = 5;
  7.  
  8.   addWord(word)
  9.   {
  10.      // vul het spelbord
  11.      for (var x = 0; x < word.length; x++)
  12.      {
  13.            // zorg ervoor dat het woord niet langer is dan je maxcols anders index out of bounce
  14.            btnBordBlock[currentRow][x] = word.charAt(x);
  15.      }
  16.      if (word == solution)
  17.      {
  18.          // won
  19.          return;  // get out
  20.      }
  21.      currentrow++;
  22.      if (currentrow >= maxrows)
  23.      {
  24.           // lost (block controls/reset game)
  25.      }
  26.   }
  27.  
  28.   createGame()
  29.   {
  30.      currentRow = 0;
  31.      btnBordBlock = []; // reinitialize
  32.      for (var row = 0; row < maxrows; row++)
  33.      {
  34.         // creeer array per row
  35.         btnBordBlock[row] = [];
  36.         for (var col = 0; col < maxcols; col++)
  37.         {
  38.             // creeer block & add to form
  39.             btnBordBlock[row][col] = new button('.');
  40.         }
  41.      }
  42.   }
  43. }
  44.  


'k hoop dat dit wat helpt? je zal het natuurlijk nog zelf moeten herschrijven in java hé :)

ohja, en nog een tip, als je met arrays werkt, gebruik maar de length, of vooraf gedefinieerde groottes, maar niet steeds de static waarde in een for loop steken, dat gaat serieus wat flexibiliteit tegen, als je dit op de voorhand definieerd (zoals maxrows en maxcols in mijn voorbeeld), moet je dit slechts op 1 plaats aanpassen, terwijl je anders alle 5'n manueel moet vervangen ;) En ja, java ondersteunt dynamische arrays, dus er gebruik van maken is geen slecht idee naar flexibiliteit onderhound van het systeem toe :)
Deze tekst werd het laatst bewerkt voor 15.98 % door thekid op maandag 12 maart 2012 om 11:48:43.
"Human beings make life so interesting. Do you know, that in a universe so full of wonders, they have managed to invent boredom." - Death in Hogfather
^ Reactie #2 geschreven door BoeMan op maandag 12 maart 2012 om 16:17:27.
BoeMan heeft nog geen avatar toegevoegd
Multiviteit: 154
The Kid, ik heb met behulp van jou stuk code dit kunnen maken.

public void lettersToevoegen() {
int rij = 0;
for (int x = 0; x < woord.length(); x++) {
btnbordblok[rij][x] = new JButton(String.valueOf(woord.charAt(x)));
if(x == 5){
rij++;
}
}
}

Maar er is nog steeds geen verbetering. Ik heb het gevoel dat ik een refresh/repaint moet doen van pijn panel. Maar dan wordt mijn for lus waar de "." in gezet worden ook weer doorlopen.
^ Reactie #3 geschreven door thekid op maandag 12 maart 2012 om 16:34:53.
thekid's avatar
Multiviteit: 5273
Moderator
nee, hé, geen new button doen, maar op dit moment de setText van de button in de array oproepen :)

ik weet het mijn voorstelling was iets te simpel :)

ik hoop dat dit gewoon een extract is van je code en dat de rij buiten de method om gedeclareerd is (of via een byref parameter wordt doorgegeven)

het object bestaat al, en zit in uw btnbordblok, het is enkel nu aan u om de properties van het object te manipuleren :)
"Human beings make life so interesting. Do you know, that in a universe so full of wonders, they have managed to invent boredom." - Death in Hogfather
^ Reactie #4 geschreven door BoeMan op maandag 12 maart 2012 om 17:29:54.
BoeMan heeft nog geen avatar toegevoegd
Multiviteit: 154
Met deze code kan ik wel 5 rijen maken met de letters van het eerst gegokte woord.
Te zien in de bijlage.

Maar zoals je ziet in de tabpane komt het 2e woord dat gegokt wordt (kamer) niet meer op het panel.

public void lettersToevoegen() {
int rij = 1;
pnlButtons.removeAll();
for (int x = 0; x < woord.length(); x++) {
btnbordblok[rij - 1][x].setText(String.valueOf(woord.charAt(x)));
pnlButtons.add(btnbordblok[rij - 1][x]);
if (x == 5) {
rij++;
}
}
}
Bijlage: a020112e5bda06976f7f80825fddcaf9.jpg
^ Reactie #5 geschreven door thekid op maandag 12 maart 2012 om 17:48:32.
thekid's avatar
Multiviteit: 5273
Moderator
ik ga eens een iets meer uitgebreidere versie maken in javascript om het duidelijker voor te stellen :)

waarom je nog pnlbuttons.add gebruikt versta ik niet, in de create maak je toch uw 5x5 button grid aan? Aangezien deze een referentie plaatsen in uw btnBordBlock array, hoef je ze in uw lettersToevoegen blok niet nogmaals toe te voegen, uw set text zou voldoende moeten zijn. Een remove all is ook absoluut niet nodig ;)

dus, removeall weg, pnlbuttons.add weg (de setup van het bord wordt in het begin gedaan)
setText is ok

uw rij moet buiten de lettersToevoegen staan (zodat je wel degelijk de rij kunt verhogen na de for loop en niet in de for loop (je probeert nl de buttons op 1 rij te wijzigen, dus geen rij++ in uw for (int x; x < woord.length; x++) { } loop, maar er pas na !!
"Human beings make life so interesting. Do you know, that in a universe so full of wonders, they have managed to invent boredom." - Death in Hogfather
^ Reactie #6 geschreven door thekid op maandag 12 maart 2012 om 18:38:09.
thekid's avatar
Multiviteit: 5273
Moderator
bij deze

sla deze code op naar een html pagina, en open deze eens in firefox ofzo

het is een "werkende" versie (zij het met niet alle functies die je wilde waarschijnlijk :))

het is in javascript, dus het is aan u mijn code verstaanbaar over te zetten naar Java.

ik heb er heel wat comments in geplaatst, zodat het hopelijk duidelijk is wat ik juist doe.
laat maar weten anders of je nog meer info wilt hebben.

CODE
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4.         <title>Lingo example</title>
  5.         <script type="text/javascript">
  6.                 function JButton(id, text) {
  7.                         this.ID = id;
  8.                         this.Caption = text;
  9.                         this.Background = '#ffffff';
  10.                         this.Foreground = '#000000';
  11.                         this.Element = document.createElement('input');
  12.                         this.Element.setAttribute('type', 'button');
  13.                        
  14.                         JButton.prototype.setText = function(caption) {
  15.                                 this.Caption = caption;
  16.                                 this.Element.setAttribute('value', caption);
  17.                         };
  18.                        
  19.                         JButton.prototype.setColor = function(foreground,background) {
  20.                                 this.Foreground = foreground;
  21.                                 this.Background = background;
  22.                                 this.Element.style.color = foreground;
  23.                                 this.Element.style.backgroundColor = background;
  24.                         };
  25.                        
  26.                         // set default values
  27.                         this.setText(this.Caption);
  28.                         this.setColor(this.Foreground, this.Background);
  29.                 }
  30.                
  31.                 function setHtml(element, text) {
  32.                         var el = document.getElementById(element);
  33.                         if (el) {
  34.                                 if (el.tagName != "INPUT")
  35.                                         el.innerHTML = text;
  36.                                 else
  37.                                         el.value = text;
  38.                         }
  39.                 }
  40.                
  41.                 // lingo game class
  42.                 var lingoGame = {
  43.                         Solution : 'TAFEL'.toUpperCase(),
  44.                         MaxRows: 5, // maximum aantal pogingen
  45.                         MaxCols: 5, // lengte van woord
  46.                         CurrentRow: 0, // huidige rij in antwoorden reeks
  47.                         Answers: [], // alle antwoorden die de gebruiker reeds gegeven heeft (ter hulp)
  48.                         Bord: [], // array met alle buttons
  49.                         initialize: function(bord) {  // initializes game, add the buttons to the grid
  50.                                 // target control
  51.                                 var control = document.getElementById(bord);
  52.                                 control.innerHTML = ''; // leeg veld met buttons
  53.                                 // create bord
  54.                                 lingoGame.Bord = [];        // recreate area (only runs once)
  55.                                 for (var x = 0; x < lingoGame.MaxRows; x++) {
  56.                                         lingoGame.Bord[x] = []; // create array
  57.                                         for (var y = 0; y < lingoGame.MaxCols; y++) {
  58.                                                 lingoGame.Bord[x][y] = new JButton('btnRow' + x + 'Col' + y, '.'); // voeg button toe (hier met id btnRow0col0...)
  59.                                                 control.appendChild(lingoGame.Bord[x][y].Element); // my button is an element, so i'm adding the element
  60.                                         }
  61.                                         control.appendChild(document.createElement('br')); // voeg een line break toe
  62.                                 }
  63.                                 /*
  64.                                 na initialize ziet lingoGame.Bord eruit als volgt:
  65.                                 [
  66.                                  [btnRow0Col0,btnRow0Col1,btnRow0Col2,btnRow0Col3,btnRow0Col4]
  67.                                  [btnRow1Col0,btnRow1Col1,btnRow1Col2,btnRow1Col3,btnRow1Col4]
  68.                                  [btnRow2Col0,btnRow2Col1,btnRow2Col2,btnRow2Col3,btnRow2Col4]
  69.                                  [btnRow3Col0,btnRow3Col1,btnRow3Col2,btnRow3Col3,btnRow3Col4]
  70.                                  [btnRow4Col0,btnRow4Col1,btnRow0Col2,btnRow4Col3,btnRow4Col4]
  71.                                  ]
  72.                                 */
  73.                                 lingoGame.CurrentRow = 0; // laat ze zeker starten met 1ste poging
  74.                                 lingoGame.Answers = []; // er zijn er nog geen dus, lege array
  75.                                 lingoGame.updateRoundChanges(); // stel de beginwaarden in
  76.                         },
  77.                         updateRoundChanges: function() {
  78.                                 setHtml('pogingCount', (lingoGame.CurrentRow + 1)); // huidige poging invullen
  79.                                 setHtml('pogingMax', (lingoGame.MaxRows));    // max pogingen invullen
  80.                                 setHtml('txtGok',''); // gokveld terug leegmaken
  81.                         },
  82.                         guess: function(txtElem) {
  83.                                 var el = document.getElementById(txtElem);
  84.                                 if (el) {
  85.                                         var gok = el.value.toUpperCase(); // compare same charachters
  86.                                         if (gok.length != lingoGame.MaxCols) {
  87.                                                 alert('Uw woord moet precies ' + lingoGame.MaxCols + ' tekens bevatten!');
  88.                                                 return; // fout dus niet verder gaan met controleren
  89.                                         }
  90.  
  91.                                         for (var col = 0; col < gok.length; col++) {
  92.                                                 lingoGame.Bord[lingoGame.CurrentRow][col].setText(gok[col]); // woord invullen
  93.                                                 if (gok[col] == lingoGame.Solution[col]) {
  94.                                                         lingoGame.Bord[lingoGame.CurrentRow][col].setColor('#000000', '#44a044'); // zwart voorgrond, groen achtergrond
  95.                                                 } else {
  96.                                                         // zoek of de char ergens anders in de Solution staat
  97.                                                         var found = false;
  98.                                                         for (var y = 0; y < lingoGame.Solution.length; y++) {
  99.                                                                 if (gok[col] == lingoGame.Solution[y]) {
  100.                                                                         found = true;
  101.                                                                         break;
  102.                                                                 }
  103.                                                         }
  104.                                                         if (found) {
  105.                                                                 lingoGame.Bord[lingoGame.CurrentRow][col].setColor('#ffffff', '#a0b000'); // wit voorgrond, oranje achtergrond
  106.                                                         }
  107.                                                 }
  108.                                         }                                   
  109.                                        
  110.                                         if (gok == lingoGame.Solution) {
  111.                                                 alert('Proficiat, u heeft het woord gevonden in ' + (lingoGame.CurrentRow + 1) + ' poging(en)!');
  112.                                                 lingoGame.initialize('myPanel'); // reinitialize game
  113.                                                 return; // gewonnen dus uit het spel gaan
  114.                                         }
  115.                                         lingoGame.Answers[lingoGame.CurrentRow] = gok; // toevoegen aan reeds gemaakte gokken
  116.                                         if (lingoGame.CurrentRow >= lingoGame.MaxCols+1) {
  117.                                                 alert('You didn\'t find the word in time!');
  118.                                         } else {
  119.                                                 lingoGame.CurrentRow++; // volgende lijn klaarzetten
  120.                                                 lingoGame.updateRoundChanges(); // klaarzetten
  121.                                         }
  122.                                 }
  123.                         }
  124.                 }
  125.         </script>
  126. </head>
  127. <body>
  128.         <table>
  129.         <tr>
  130.                 <td>Game board</td>
  131.                 <td>Info panel</td>
  132.         </tr>
  133.         <tr>
  134.                 <td valign="top">
  135.                         <div id="myPanel">&nbsp;</div>
  136.                 </td>
  137.                 <td valign="top">
  138.                         <div class="info">
  139.                         Here comes the info
  140.                         </div>
  141.                 </td>
  142.         </tr>
  143.         <tr>
  144.                 <td colspan="2">
  145.                 Uw gok: <input type="text" id="txtGok" size="10" />
  146.                 <input type="button" value="Gokken" onclick="javascript:lingoGame.guess('txtGok');" />
  147.                 <span id="pogingCount">0</span> of <span id="pogingMax">5</span>
  148.                 </td>
  149.         </tr>
  150.         </table>
  151. </body>
  152. <script type="text/javascript">
  153.         window.onload = function() {
  154.                 lingoGame.initialize('myPanel');
  155.         }
  156. </script>
  157. </html>


have fun
"Human beings make life so interesting. Do you know, that in a universe so full of wonders, they have managed to invent boredom." - Death in Hogfather
^ Reactie #7 geschreven door thekid op maandag 12 maart 2012 om 18:45:03.
thekid's avatar
Multiviteit: 5273
Moderator
ahja, wanneer je het woord niet hebt geraden moet je nog eens de initialize oproepen om te herstarten en eventueel de opdracht weergeven zodat ze wel degelijk weten wat ze aan het zoeken waren.

en dit is maar een leidraad hé, ik heb het in 20 minuutjes geschreven, dus ik zou het niet 100% optimaal noemen, maar eerder een rap rap implementatie :)

je kan trouwens ook makkelijk het aantal pogingen of de lengte van het woord aanpassen door maxrows / maxcols aan te passen in de var lingoGame

en de function JButton heb ik toegevoegd om het wat duidelijker te maken voor je :) Het opvullen van de kleurtjes geef ik er dan als bonus bij (maar ik weet niet of je moet rekening houden met een terugkerend karakter (bvb je geeft 2 e's in, dan moet er misschien maar 1tje oplichten met de oplossing tafel en niet alletwee de e's)

en mijn manier van invullen en van plaatsen op het bord is natuurlijk de HTML implementatie, heb echter geprobeerd het verschil voor je wat te beperken :)
"Human beings make life so interesting. Do you know, that in a universe so full of wonders, they have managed to invent boredom." - Death in Hogfather
^ Reactie #8 geschreven door BoeMan op maandag 12 maart 2012 om 21:12:34.
BoeMan heeft nog geen avatar toegevoegd
Multiviteit: 154
Heel erg bedankt theKid.

met deze miniscule functie kon ik de letters al toevoegen. Ik heb een rijteller gezet bij elke keer als er gegokt wordt dus de worden worden netjes onder elkaar toegevoegd.

public void lettersToevoegen() {
for (int x = 0; x < woord.length(); x++) {
btnbordblok[rijNummer][x].setText(String.valueOf(woord.charAt(x)));
}
}

Heb je misschien ook tips voor de controle van het woord te maken? Nu heb ik een testversie met zeer veel dubbele/onnodige code.
Er moet gecontroleerd worden of het te zoeken woord gelijk is aan het ingegeven woord. Is dit niet het geval, dan letter per letter controleren. Als de letter in het woord zit maar niet op de juiste plek, moet mijn Jbutten oranje worden, staat de letter op de juiste plek, dan wordt dit groen. Volledig foute letters moeten een rode JButton opleveren.

De kleuren zijn nu uiteraard bijzaak.

Mvg Gijs
(ps: als je wil dat ik de hele code hier een keer neerzet meld je het maar, ik post nu de stukken om de conversatie een beetje overzichtelijk te houden :) )
^ Reactie #9 geschreven door Wheeldigger op maandag 12 maart 2012 om 21:33:50.
Wheeldigger's avatar
Multiviteit: 10173
Moderator
Als het werkt en je wilt het spel delen, en met goedkeuring van thekid (het is gevuld met TKS ;) ) dat je het in dit topic plaatst :)
^ Reactie #10 geschreven door thekid op maandag 12 maart 2012 om 21:35:46.
thekid's avatar
Multiviteit: 5273
Moderator
Hey Gijs,

ja hoor geen probleem om de letters te vergelijken, ik doe het reeds in mijn voorbeeld in de functie lingoGame.guess (vanaf lijn 82 - 123)

zie het principe als volgt
CODE
  1.  
  2. for (var x = 0; x < woord.length; x++)
  3. {
  4.   // set text
  5.   // set colors of button
  6.  if (woord[x] == oplossing[x])
  7.  {
  8.     // hetzelfde zet groen
  9.  } else {
  10.    if (oplossing.indexOf(woord[x]) >= 0) {
  11.      // andere plaats zet oranje
  12.    } else {
  13.      // niet gevonden, zet rood
  14.    }
  15.  }
  16. }


kleuren aanpassen doe je zo
CODE
  1.  
  2. //Change JButton Foreground and Background Color 
  3.         button.setForeground(Color.BLUE); 
  4.         button.setBackground(Color.yellow); 
  5.  


en je hoeft voor mij niet je volledige code door te geven hoor, ik gaf je gewoon mjin volledige oplossing, omdat deze niet zo lang was, en het html is, dus je niet meer hoeft te doen dan op download deze code te klikken en opslaan als html en je kan het uitvoeren/openen in firefox, chrome, ie zoals je wilt :)

als je echter wilt dat ik eens door je code loop en je wat tips geef, dan heb ik daar geen problemen mee (ik ken java, is gewoon meer dan 10 jaar geleden dat ik er nog eens iets in ontwierp). Ik kan je wel wat tips meegeven ivm programma opbouw, of dingen waarop je kan letten vanaf het begin :)
"Human beings make life so interesting. Do you know, that in a universe so full of wonders, they have managed to invent boredom." - Death in Hogfather
^ Reactie #11 geschreven door thekid op maandag 12 maart 2012 om 21:39:15.
thekid's avatar
Multiviteit: 5273
Moderator

Dixit

Dixit Wheeldigger op 12/03/2012 21:33:50:

Als het werkt en je wilt het spel delen, en met goedkeuring van thekid (het is gevuld met TKS ;) ) dat je het in dit topic plaatst :)


ik heb daar niet zozeer problemen mee, maar aangezien het een school opdracht is van hem weet ik niet of ie deze zomaar mag online gooien :)
"Human beings make life so interesting. Do you know, that in a universe so full of wonders, they have managed to invent boredom." - Death in Hogfather
^ Reactie #12 geschreven door thekid op dinsdag 13 maart 2012 om 00:18:43.
thekid's avatar
Multiviteit: 5273
Moderator
wilde wel nog eens java testen :)

heb een heel rudimentaire versie van gemaakt (na heel wat gesukkel met de layoutmanagers)

met als resultaat
Bijlage: 4b57925c2b62e03cc1278608f0a3e3d0.zip

is een eclipse project, met 3 klasses
en ik ga eerlijk zijn, java is ietskes te lang geleden voor mij :)
Bijlage:
http://www.multidesk.be/bijlage/722ab9d9107596ba513c0388d4ba0129.png
"Human beings make life so interesting. Do you know, that in a universe so full of wonders, they have managed to invent boredom." - Death in Hogfather
^ Reactie #13 geschreven door BoeMan op dinsdag 13 maart 2012 om 15:26:56.
BoeMan heeft nog geen avatar toegevoegd
Multiviteit: 154
theKid, heel erg bedankt.

De controle was een van de laatste stukken code die ik nog nodig had om het project te vervolledigen.

De fout in mijn vorige controle was, dat als ik het woord "Lepel" wou laten testen, en het te raden woord was "Tafel", dan gaf de controle aan dat de 1ste "L" van Lepel op de foute plaats stond maar wel in het woord. en de laatste "L" van lepel op de juiste plaats. Dus mijn controle gaf aan dat er 2 "L'en" in het te raden woord stonden.

Met het project dat je me doorstuurde kan ik de controle code wel begrijpen waarschijnlijk een veel betere maken. Ik zal nog wel wat problemen hebben met de getters voor waarden van de klasse controle naar LingoUI te krijgen maar dan hoor je het wel ;)

Het is ook helemaal geen probleem om dit project online te zetten als het klaar is. Het is gewoon een periodeproject voor het vak geavanceerde OO technieken.

Mvg Gijs
^ Reactie #14 geschreven door thekid op dinsdag 13 maart 2012 om 15:52:32.
thekid's avatar
Multiviteit: 5273
Moderator
Succes,

laat dan maar weten hoe het ging hé :) of om de finale versie online te plaatsen.
"Human beings make life so interesting. Do you know, that in a universe so full of wonders, they have managed to invent boredom." - Death in Hogfather
^ Reactie #15 geschreven door BoeMan op dinsdag 13 maart 2012 om 22:33:23.
BoeMan heeft nog geen avatar toegevoegd
Multiviteit: 154
Dag allemaal,

ik heb nog een laatste probleem met de woord-controle. Niet qua implementatie maar wel een klein stukje logica code achter deze controle.

Als tafel het woord is dat er geraden moet worden, en ik geef lepel in als test. Dan geeft de controle terug dat er 2 keer een E in het woord zit en 2 keer een L.
Iemand een idee hoe ik dit laatste foutje eruit kan krijgen?


Bijlage: 7a802a4686b21ccd73332c487bbaec73.jpg
^ Reactie #16 geschreven door thekid op woensdag 14 maart 2012 om 09:23:28.
thekid's avatar
Multiviteit: 5273
Moderator
Zoiets dus?


http://www.multidesk.be/bijlage/5e2b2960ce6b478cc6f344b6d40e57df.png


is een aanpassing nodig in uw code

je zoekt eerst alle correcte chars, vervangt deze door een spatie, en dan zoek je alle overige letters, terwijl je ze per gevonden letter ook uit de te zoeken oplossingen haalt

ps: er zal waarschijnlijk een eenvoudigere manier voor zijn :)
CODE
  1.  
  2.     public Boolean guess(String gok)
  3.     {
  4.         String backSolution = this.getOplossing().toUpperCase();
  5.         String backGok = gok.toString().toUpperCase();
  6.         gok = gok.toUpperCase(); // zelfde als voor oplossing
  7.         this.antwoorden[this.huidigePoging] = gok;
  8.         for (int column = 0; column < lingo.AANTAL_LETTERS; column++)
  9.         {
  10.             char teken = gok.charAt(column);
  11.             Color front = Color.BLACK, back = Color.RED; // assume not found!
  12.            
  13.             if (gok.charAt(column) == this.oplossing.charAt(column))
  14.             {
  15.                 front = Color.WHITE;
  16.                 back = Color.GREEN;
  17.                 backSolution = backSolution.substring(0, column) + " " +
  18.                                backSolution.substring(column + 1);
  19.                 backGok = backGok.substring(0, column) + "." +
  20.                           backGok.substring(column + 1);
  21.             }
  22.             UpdateButton(buttonArray[this.huidigePoging][column], String.valueOf(teken), front, back);
  23.         }
  24.         // backsolution now only contains the none matching characters
  25.         for (int column = 0; column < lingo.AANTAL_LETTERS; column++) {
  26.             char teken = backGok.charAt(column);
  27.                         // enkel nog niet gevonden buttons aanpassen
  28.             if (!String.valueOf(teken).contentEquals(".")) {
  29.                     Color front = Color.BLACK, back = Color.red;
  30.                    
  31.                 int pos = backSolution.indexOf(teken);
  32.                     if (pos >= 0) {
  33.                         back = Color.ORANGE;
  34.                         front = Color.WHITE;
  35.                         backGok = backGok.substring(0, column) + "." +
  36.                                           backGok.substring(column + 1);
  37.                        
  38.                        
  39.                         backSolution = backSolution.substring(0, pos) + " " +
  40.                                                        backSolution.substring(pos + 1);
  41.                     }
  42.                 UpdateButton(buttonArray[this.huidigePoging][column], String.valueOf(teken), front, back);
  43.             }
  44.         }
  45.         if (this.isCorrectGuess(gok))
  46.             return true;
  47.         else
  48.         {
  49.             this.huidigePoging++;
  50.             return false;
  51.         }
  52.     }
  53.  
"Human beings make life so interesting. Do you know, that in a universe so full of wonders, they have managed to invent boredom." - Death in Hogfather
^ Reactie #17 geschreven door BoeMan op woensdag 14 maart 2012 om 22:35:06.
BoeMan heeft nog geen avatar toegevoegd
Multiviteit: 154
theKid, ik probeer mijn code aan te passen met die van u om die controle te updaten. Maar intelliJ herkent UpdateButton niet dus ik zit vast bij dit gedeelte. Hoe heb jij dit dan gedaan? :)

Mvg Gijs
^ Reactie #18 geschreven door thekid op woensdag 14 maart 2012 om 22:45:48.
thekid's avatar
Multiviteit: 5273
Moderator
Ja hoor

in mijn lingo klasse

CODE
  1.    
  2.     private void UpdateButton(JButton button, String text, Color foreground, Color background)
  3.     {
  4.         button.setText(text);
  5.         button.setForeground(foreground);
  6.         button.setBackground(background);
  7.     }
  8.  


dus, in dezelfde klasse plaatsen als waar uw controle gebeurt ;)

ps, je kon dit ook gevonden hebben door te kijken wat ik net doorgeef (of de ide de missende functie te laten generen op basis van de gegevens :)) Ik ken intelliJ niet echt, gebruikte vroeger ofwel netbeans ofwel eclipse, en volgens mij zijn beiden zeker volwaarde ide's (netbeans voor mij nog iets meer of eclipse, maar allé :))
"Human beings make life so interesting. Do you know, that in a universe so full of wonders, they have managed to invent boredom." - Death in Hogfather
^ Reactie #19 geschreven door thekid op vrijdag 16 maart 2012 om 12:00:55.
thekid's avatar
Multiviteit: 5273
Moderator
Ik gok erop dat het nu gelukt is :)
"Human beings make life so interesting. Do you know, that in a universe so full of wonders, they have managed to invent boredom." - Death in Hogfather
  • Pagina
  • [1]
  • 2

Snel-antwoordformulier
Toon uitgebreid antwoordformulier Bericht nalezen Bericht plaatsen