Gele letters in het spelletje Lingo (C#)

Pagina: 1
Acties:
  • 2.320 views

Onderwerpen

Vraag


Acties:
  • 0 Henk 'm!

  • Don1233
  • Registratie: Juni 2016
  • Laatst online: 27-03-2022
Hoi hoi,

Sinds maanden ben ik zo nu en dan een uurtje aan het programmeren, gewoon omdat ik het wel eens leuk vind. Ik heb er niet zo veel verstand van, maar hele simpele spelletjes als boter kaas en eieren, maar ook Lingo vind ik nog wel leuk om te doen. Ik ben al behoorlijk ver, het enige waar ik nu nog tegenaan loop zijn de gele letters. Even voor het beeld:

- Rode letters zijn goed geraden. (gelukt)
- Gele zitten wel in het woord maar op een andere plek.
- Blauwe letters zitten niet in het woord. (gelukt)

Gele letters zijn dus letters die dus wél in het woord zitten, maar op een andere plek. Deze worden alleen geel als de letter dus een keer op een andere positie in het woord voorkomt. Nu worden namelijk alle letters geel die niet op de juiste plaats zitten en dat moet niet helemaal. Alleen als de letters niet al geraden zijn in het woord (als dezelfde letter bijvoorbeeld meerdere malen in de poging zit die je doet). Komt een letter bijvoorbeeld 2x voor in een oplossing die je moet raden, dan worden alle dezelfde letters alleen geel als deze nog niet geraden is. Anders worden ze blauw (Dan komen ze niet vaker in de oplossing voor).

Het spelletje ben ik aan het maken in Visual Studio van Microsoft in de programmeertaal c#. Iemand enig idee? Alvast bedankt!

[ Voor 92% gewijzigd door Don1233 op 30-03-2017 15:58 ]

Alle reacties


Acties:
  • 0 Henk 'm!

  • Bloemkoolsaus
  • Registratie: Juni 2006
  • Niet online
Kun je niet eerst controleren een letter uberhaubt in de oplossing voorkomt (met iets van String.IndexOf ofzo)
Nee => Blauw
Ja => Check of de letter op de juiste plek staat

Acties:
  • 0 Henk 'm!

  • Onbekend
  • Registratie: Juni 2005
  • Laatst online: 22:55

Onbekend

...

Stel het woord is: BEZEM

En de deelnemer probeert het woord: BEELD
De eerste E zou rood moeten kleuren, en de tweede geel.

Als de deelnemer het volgende woord probeert: BREED
Dan moet de eerste E geel worden, en de tweede rood.

Jouw oplossing zou dus eerst de correcte letters moeten vinden. En daarna elke letter opnieuw om te kijken of deze in het woord zit. Maar zodra je een letter met geel of rood hebt gemarkeerd, moet je die letter daarna niet nogmaals controleren.

Dus als de deelnemer het woord BEEDE probeert, kijk je eerst welke letters correct zijn. (Dat is hier dan eerste en tweede letter.)
Vervolgens gebruik je het woord _ _ ZEM om te vergelijken met het woord _ _ EDE.
De derde letter is een E, en die vind je ook in het te raden woord. Dus die markeer je geel, en daarna ga je verder met vergelijken van de woord _ _ Z _ M met het woord _ _ _ DE. Nu herhaal je dat natuurlijk voor alle letters, maar die zitten er niet meer in.

Speel ook Balls Connect en Repeat


Acties:
  • 0 Henk 'm!

  • Marco1994
  • Registratie: Juli 2012
  • Laatst online: 19:16
Wat je kan doen is van zowel het juiste woord en het ingevoerde woord de letters splitten en voor het ingevoerde woord .contains uitvoeren op het juiste woord, als deze true is, gaat die naar geel. Als ook de index juist is-> groen

Acties:
  • 0 Henk 'm!

Verwijderd

Let ook op dat je de gele letter die gevonden is uit het te raden woord weghaalt. Je wilt niet dat bijvoorbeeld bij het woord BROER alle E's in het ingevoerde woord EELDE geel worden - er mag er maar 1 geel worden.

Een kleine hint: je zou met woord[index] = ' '; een letter op spatie kunnen zetten om te voorkomen dat dit gebeurt.

Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 03:13
Verwijderd schreef op donderdag 30 maart 2017 @ 17:53:
Let ook op dat je de gele letter die gevonden is uit het te raden woord weghaalt. Je wilt niet dat bijvoorbeeld bij het woord BROER alle E's in het ingevoerde woord EELDE geel worden - er mag er maar 1 geel worden.
Is dat bij Lingo ook zo? Hoe wordt dan bepaald wélke E geel wordt?

Acties:
  • 0 Henk 'm!

  • Falcon
  • Registratie: Februari 2000
  • Laatst online: 17-09 09:51

Falcon

DevOps/Q.A. Engineer

Soultaker schreef op donderdag 30 maart 2017 @ 18:37:
[...]

Is dat bij Lingo ook zo? Hoe wordt dan bepaald wélke E geel wordt?
Dit is het geval bij Lingo, want bij het woord BREED en dan na invullen van EELDE zullen 2 E's geel worden, want er zitten immers 2 E's in BREED.

"We never grow up. We just learn how to act in public" - "Dyslexie is a bitch"


Acties:
  • +1 Henk 'm!

Verwijderd

Yep, de eerste die gevonden wordt. Je gaat dus eerst alle rode zoeken. Van de letters die overblijven zoek je daarna de gele, en de rest is dam dus blauw.

Acties:
  • 0 Henk 'm!

  • ik222
  • Registratie: Maart 2007
  • Niet online
Ik zou om te beginnen zowel het woord wat je zoekt als het ingevoerde woord per letter splitsen en bijvoorbeeld in een array zetten.

Vervolgens kijk je eerst wel letters op de goede plek staan die maak je rood en deze verwijder je vetvolgens uit de arrays.

Daarna kijk je per letter uit de invoer of die nog ergens in de oplossing zit. Zo ja maak je hem geel en verwijder je je hem ook weer uit beide arrays.

Alle letters die dan nog over ziijn in de invoer worden of blijven blauw.

/Edit: Oud topic...

[ Voor 4% gewijzigd door ik222 op 02-04-2017 22:06 ]


Acties:
  • 0 Henk 'm!

  • Opifex
  • Registratie: September 2013
  • Laatst online: 16-09 21:29
Ik zie waarschijnlijk wat over het hoofd (want ik ken Lingo maar vaag, dat hebben ze hier in het Zuiden niet), maar kan het niet veel simpeler dan hetgeen hier al voorgesteld wordt?

Woord wordt ingegeven --> letters van het gegeven woord vergelijken met die van het juiste woord, de letters die er in voorkomen worden nu geel gekleurd. (Eventueel met een tellertje dat er voor zorgt dat er niet meer letters gekleurd worden dan er inzitten)
Daarna wordt gecontroleerd of er letters op de juiste plaats zitten. Als dit zo is worden ze rood gekleurd. (En evt. een extra controle of deze letter misschien niet geel was gekleurd, dat zou willen zeggen dat er een andere teveel geel gekleurd was en dit opgelost moet worden.)

Acties:
  • 0 Henk 'm!

Verwijderd

Daarom eerst de rode, en daarna de gele.

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var divs = document.querySelectorAll('div.letter');
var woord = 'eelde';
var gok = 'broer';
for (var i = 0; i < 5; i++)
    if (woord[i] == gok[i]) {
        woord[i] = gok[i] = ' ';
        div[i].style.background = 'red';
    }
for (var i = 0; i < 5; i++) {
    var p = woord.indexOf(gok[i]);
    if (woord[i] !== ' ' && p != -1) {
        woord[i] = gok[i] = ' ';
        div[i].style.background = 'yellow';
    }
}
for (var i = 0; i < 5; i++)
    if (woord[i] !== ' ')
        div[i].style.background = 'blue';

Acties:
  • 0 Henk 'm!

  • Don1233
  • Registratie: Juni 2016
  • Laatst online: 27-03-2022
ik222 schreef op zondag 2 april 2017 @ 21:59:
Ik zou om te beginnen zowel het woord wat je zoekt als het ingevoerde woord per letter splitsen en bijvoorbeeld in een array zetten.

Vervolgens kijk je eerst wel letters op de goede plek staan die maak je rood en deze verwijder je vetvolgens uit de arrays.

Daarna kijk je per letter uit de invoer of die nog ergens in de oplossing zit. Zo ja maak je hem geel en verwijder je je hem ook weer uit beide arrays.

Alle letters die dan nog over ziijn in de invoer worden of blijven blauw.

/Edit: Oud topic...
Hoi!

Ik ben toch weer bezig. ik kwam er maar niet uit dus heb het laten liggen. Wat ik nu heb:

C#: Lingo
1
2
        public string[] try_letters = { ".", ".", ".", ".", "." }; De poging die je doet
        public string[] letter_helper = { ".", ".", ".", ".", "." };


Daarmee verdeel ik het onder in een G, H en F. G is goed. H is half. en de F is fout.

Dan heb ik nog een regel code om van een tekstdocument de eerste regel te halen en dan te splitsen:
public string[] mistery_word = first_word.Select(c => c.ToString()).ToArray();

Dus jij zegt maak er nog één voor de oplossing en maak daar een "." als deze goed geraden is en controleer dus zo of de letters nog in het woord zitten?

[ Voor 12% gewijzigd door Don1233 op 11-02-2018 14:02 ]


Acties:
  • 0 Henk 'm!

  • DJMaze
  • Registratie: Juni 2002
  • Niet online

Maak je niet druk, dat doet de compressor maar


Acties:
  • 0 Henk 'm!

  • Don1233
  • Registratie: Juni 2016
  • Laatst online: 27-03-2022
Ja! Ik had al het idee dat het dubbel was. 8)7 |:( :S Maar: beter nog, ik heb wel de oplossing:

Ik heb nu een extra array waarin ik de oplossing van het te raden woord plaats
Vervolgens haal ik daar alle goed geraden letters uit en vergelijk ik DAAR of er nog letters half zijn.
De 'rest' is fout.

Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 21:27

Creepy

Tactical Espionage Splatterer

1 topic is wel genoeg idd. Dus verder in Gele letters controleren

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney

Pagina: 1

Dit topic is gesloten.