Archief - [PROG]java mastermind

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

COOLKILLer

Legacy Member
Yu,

ik heb als opdracht voor java het spel mastermind maken gekregen.
Probleem is dat ik een beetje vast zit met het controleren van de hoeveelheid juiste kleuren (dus niet juiste positie)

Voor de juiste positie heb ik dit geschreven en dit werkt:
Code:
public int CompareColorCorrectPlace(String[] RandomCode, String[] YourColorCode)
    {
        int i = 0;
        int a = 0;
        while (a<4){
        if (RandomCode[a].equals(YourColorCode[a])) {
            i++;
        }
        a++;
    }
        return i;
    }

Dus het zou fijn zijn als iemand mij een idee kan geven, mss pseudo code ofzo (als ge het ni helemaal wilt uitschrijven)

mvg

Bavo aka Joske

Legacy Member
Code:
	public int countRightColors(String[] ref, String[] guess) {
		int counter = 0;
		// copy of reference array because we will replace matched values
		String [] refCopy = new String[ref.length]; 
		// fast way of copying
		System.arraycopy(ref, 0, refCopy, 0, ref.length);
		// for each guess
		for (String a : guess) {
			// check for each color in reference copy
			for (int refIndex = 0; refIndex < refCopy.length; refIndex++) {
				// if it equals
				if (a.equals(refCopy[refIndex])) {
					// score up
					counter++;
					// replace foudn value to avoid duplicate matches
					refCopy[refIndex] = "matched";
					// stop searching for that guess
					break;
				}
			}
		}
		return counter;
	}

Het volgt de conventies beter en is wat dynamischer qua array grootte.

COOLKILLer

Legacy Member
Ziet er mij wel een beetje ingewikkeld uit (no offence), is het niet simpeler doenbaar aangezien dit veel dingen bevat die we nog ni geleerd hebben en we zouden het met huidige kennis moeten kunnen maken...

En ook ni zo echt practisch aangezien er een heel deel code (for lus) hier verschillende keren moet herhaald worden voor al de kleuren (of zit ik mis?)

Ik krijg trouwens een foutmelding als ik compile (";" expected op lijn 8...)

Toch heel fel bedankt (ben nog maar beginner bij java programmeren daarmee dat ik het wat moeilijk heb om je code te interpreteren)

Bavo aka Joske

Legacy Member
Het enige 'moeilijke' is dat de array wordt gekopieerd met een System utility, de rest is heel erg basis. het werkt want heb het getest en rechtreeks van daar geknipt ;)

COOLKILLer

Legacy Member
Raar, ik krijg nogthans een foumelding in BlueJ...
maar ik zal nog eens proberen

update: het ligt niet aan mijn aanpassingen dat ik die foutmelding krijgt...

Bavo aka Joske

Legacy Member
Gebruik je wel Java5? Anders is het die foreach loop, dat is een Java 5 feature. java 5 is toch al paar jaar oud... is een setting in je IDE.

boemawas

Legacy Member
COOLKILLer zei:
Yu,

ik heb als opdracht voor java het spel mastermind maken gekregen.
Probleem is dat ik een beetje vast zit met het controleren van de hoeveelheid juiste kleuren (dus niet juiste positie)

Voor de juiste positie heb ik dit geschreven en dit werkt:
Code:
public int CompareColorCorrectPlace(String[] RandomCode, String[] YourColorCode)
    {
        int i = 0;
        int a = 0;
        while (a<4){
        if (RandomCode[a].equals(YourColorCode[a])) {
            i++;
        }
        a++;
    }
        return i;
    }

Dus het zou fijn zijn als iemand mij een idee kan geven, mss pseudo code ofzo (als ge het ni helemaal wilt uitschrijven)

mvg

ik heb het spel al helemaal af gekregen. Zorg er zeker voor dat je spel heel eenvoudig uit te breiden is tot meerdere pogingen, meerdere kleuren en variabele codelengte !

Ik kan je mijn code natuurlijk niet geven, maar moest jij het echte spel nog niet zo goed kunnen spelen, zou ik je eerst aanraden om het spel in eigen woorden te kunnen uitleggen. In jou geval is het best dat je er eens goed over nadenkt wanneer je een witte bolletje krijgt. Dat is nu niet zo moeilijk, maar indien er meerdere balletjes zijn van dezelfde kleur in de geheime code heb je problemen. met die redenering van jouw.
bv code is groen, geel, groen, geel
ik gok geel, groen, geel ,blauw

gevolg:
1 wit : groen(code)[0] = groen(geheim)[1]
1 wit : geel(code)[1]=geel(geheim)[1]
1 wit: geel(code)[3]=geel(geheim)[2]

dus 3 witten als resultaat
Besef goed wanneer je een element uit een rij moet elimineren ! (hint hint)

Ik heb de regeling van de witte bolletjes op deze manier gedaan:

for(...){
for(...){
while(...){ ...}
if(...){...}
}
}

return...
:p
Een 5 tal regeltjes, echt niet moeilijk als je de spelregels heeeel goed hebt begrepen :) .
je kan best een array returnen, die de zwart/wit reeks returnt

Verder vind ik het vrij nutteloos om te vragen of iemand de code voor jouw wil overschrijven.
Men kijkt meer naar OOP,dan naar de correctheid .Onthou dat je jezelf nog steeds kan uitschrijven. Ik begrijp wel dat het frustrerend kan zijn, maar als het een troost mag zijn, wil ik u zeggen dat ik alleen maar arrays , for en whilelussen heb gebruikt en in totaal 200 regels heb geschreven voor deze oefening.

Veel plezier !
mvg, van de student die zijn practicum al af heeft
heheheh :lol:
:evil::evil::evil:

*gaat nu genieten van zijn spelletje*
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan