Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > C/C++
You last visited: Today at 13:02

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Mastermind in C#

Discussion on Mastermind in C# within the C/C++ forum part of the Coders Den category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Jan 2011
Posts: 362
Received Thanks: 41
Mastermind in C#

Hey leute ich habe ein kleines problem, in der Schule haben wir die aufgabe bekommen Mastermind zu programmieren ( ein Spiel ) , es soll keine Grafische oberfläche haben, nur eine einfache konsolen anwendung.
Es gibt 10 Versuche , aus 6 verschiedenen farben soll man die 4 richtigen die per zufall ausgewählt wurden herrausfinden.
Für den anfang haben wir in der Schule mit 4 Farben angefangen , der lehrer hat uns aber leider nicht gezeigt wie wir eine random funktion einbauen sondern uns nur auf irgendwelche websites verwiesen.
Code:
	#include <stdio.h>
	#include <stdlib.h>
	#include <time.h>

	int main (void){
	 
	char f1='R'; // farbe 1
	char f2='B';// farbe 2 
	char f3='G';// farbe 3
	char f4='Y';//farbe 4
	

	char r1;// raten 1
	char r2;//raten 2
	char r3;//raten 3
	char r4;// raten 4
	
	int schwarz=0;// wieviele farben richtig sind (counter)
	int weiss=0;// wieviele positionen richtig sind (counter)
	int v=0; // ausgabe falls verlieren (counter)
	
	srand(time(NULL));
	int random  = rand()% 6+1;
    

	if(random==1 ) printf("%c\n",f1);            
        if(random==2 ) printf("%c\n",f2);
        if(random==3 ) printf("%c\n",f3);
        if(random==4 ) printf("%c\n",f4);
         
	do {

	printf("Bitte geben sie 4 Farben an R,B,G,Y in beliebiger Reihenfolge\n");
	scanf("%c %c %c %c",&r1,&r2,&r3,&r4);
	fflush(stdin);
	if (r1==f1)weiss ++;
	else if (r1==f2 || r1==f3 || r1==f4)schwarz ++;	
	
        if (r2==f2)weiss ++;
	else if(r2==f1 || r2==f3 || r2==f4)schwarz ++;
		
	if (r3==f3)weiss ++;
	else if(r3==f1 || r3==f2 || r3==f4)schwarz ++;
	
	if (r4==f4)weiss ++;
	else if(r4==f2 || r4==f3 || r4==f1)schwarz ++;
		
        printf ("Anzahl richtiger Farben Schwarz %i , anzahl richtiger pos weiss %i\n",schwarz,weiss);
	printf ("===============================================================\n");
   
    if (weiss==4) printf("SIE HABEN GEWONNEN!\n");
    else v ++;
    if (v==10) printf("NIETE , LEIDER VERLOREN\n");
    }while (weiss !=4);
    
    
    system("PAUSE");
	return 0;
	}
das ist mein bisheriger code, ich hoffe ihr könnt mir mit der random funktion helfen ich bin gerade richtig am verzweifeln ._.
ps. der lehrer verwies uns darauf das wir dies mit der do while schleife lösen sollen bzw das programm schreiben und keine for schleifen nutzen sollen weil wir die noch nicht im unterricht hatten .
Rullx3 is offline  
Old 10/26/2012, 17:25   #2
 
elite*gold: 42
Join Date: Jun 2008
Posts: 5,426
Received Thanks: 1,888
MoepMeep is offline  
Thanks
1 User
Old 10/26/2012, 17:34   #3
 
elite*gold: 0
Join Date: Jan 2011
Posts: 362
Received Thanks: 41
Ich versteh trotzdem nicht ganz wie ich es nun anstellen soll das er mir 4 zahlen von 1-4 random mischt und ich diese als die farben deklarieren soll?
Rullx3 is offline  
Old 10/26/2012, 17:41   #4
 
RunzelEier's Avatar
 
elite*gold: 0
Join Date: Dec 2010
Posts: 1,196
Received Thanks: 682
PHP Code:
double uniform_deviate int seed )
{
   return 
seed * ( 1.0 / ( RAND_MAX 1.0 ) );
}
int r uniform_deviate rand() ) * ( );
uniform_deviaterand() ) * ( 

btw:c#?
RunzelEier is offline  
Thanks
1 User
Old 10/26/2012, 17:47   #5
 
elite*gold: 0
Join Date: Jan 2011
Posts: 362
Received Thanks: 41
Ja wir programmieren in C# mit Visual Studio :x aus deinem code werde ich nicht schlau ._.
Rullx3 is offline  
Old 10/26/2012, 17:48   #6
 
elite*gold: 5
Join Date: Sep 2006
Posts: 385
Received Thanks: 218
Okay, lass mich dir in deiner noch jungen Programmiererlaufbahn ein paar gut gemeinte Ratschläge geben.

1. Was ihr da programmiert ist kein C# sondern C. (dafür reißen dir manche Spinner in den Foren den Kopf ab)
2. Benenn deine Variablen anständig. "f1"? "r1"? "schwarz" und "weiß" speicher einen Counter? Da blickt keiner durch.
3. Gewöhne dir schnellstmöglich an sauber einzurücken. Nach jedem { wird in den folgenden Zeilen eins weiter eingerückt und nach jedem } eins weniger. Siehe:


@Topic:
Wo ist das Problem? In deinem Code unten nutzt du rand doch bereits indem du Zufallszahlen von 1 bis 7 erstellst.
Nightblizard is offline  
Old 10/26/2012, 17:53   #7
 
elite*gold: 0
Join Date: Jan 2011
Posts: 362
Received Thanks: 41
Tut mir leid eben C ^^
F1 und R1 hat unser lehrer uns vorgeben , wo nutze ich unten den rand mit zufallszahlen von 1-7?;o
Mein problem besteht darin das ich die zufallsfunktion nicht verstehe und ausserdem nicht verstehe wie ichdie zahlen die mir dann ausgegeben werden mit den farben verknüpfen soll, im endeffekt sollen ja die farben gemischt werden und die muss man erraten , desweiteren dürfen keine zahlen doppelt vorkommen was bei mir der fall ist
Rullx3 is offline  
Old 10/26/2012, 18:00   #8
 
elite*gold: 42
Join Date: Jun 2008
Posts: 5,426
Received Thanks: 1,888
Sag deinem Leher mal bitte, er soll nichts Unterrichten was er nicht kann. Der Informatik Unterricht an Schulen ist echt eine zumutung.
MoepMeep is offline  
Thanks
2 Users
Old 10/26/2012, 18:01   #9
 
elite*gold: 0
Join Date: Jan 2011
Posts: 362
Received Thanks: 41
Leider ist es Programmier unterricht bei meiner schulischen ausbildung
Das schlimmste ist er faselt irgendwas und sagt dann macht mal und niemand hat eine ahnung wie es geht oder wie man die funktionen richtig anwenden soll.
Rullx3 is offline  
Old 10/26/2012, 18:04   #10
 
elite*gold: 42
Join Date: Jun 2008
Posts: 5,426
Received Thanks: 1,888
Dann beschwer dich.
MoepMeep is offline  
Thanks
1 User
Old 10/26/2012, 18:45   #11
 
elite*gold: 5
Join Date: Sep 2006
Posts: 385
Received Thanks: 218
Quote:
Originally Posted by MoepMeep View Post
Dann beschwer dich.
Und du meinst deswegen stellen die in der Schule nen Programmierer mit nem Gehalt von 60€/h ein? Wo lebst denn du? Ich wandere sofort aus!

@Topic:

Du nutzt das doch hier:
Code:
int random  = rand()% 6+1;
Der Modulo (%) Operator berechnet dir den Rest einer Division. 5 % 2 == 1 (5 /2 = 2 Rest 1).
Wenn du jetzt also z.B. folgendes machst
Code:
123456876543 % 5
dann erhälst du eine Zahl zwischen 0 und (ausschließlich) 5. Wenn du also nun Zahlen zwischen 1 und 5 erstellen willst, dann machst du halt folgendes:

Code:
1278654567 % 5 + 1
Das erstellt dir eine Zahl zwischen 0 und (ausschließlich) 5 und rechnet darauf dann nochmal +1. 0+1 == 1 und 4+1 == 5. Zwischen 1 und 5!

Ich denke damit solltest du vorran kommen.
Nightblizard is offline  
Old 10/26/2012, 19:29   #12
 
elite*gold: 42
Join Date: Jun 2008
Posts: 5,426
Received Thanks: 1,888
Quote:
Originally Posted by Nightblizard View Post
Und du meinst deswegen stellen die in der Schule nen Programmierer mit nem Gehalt von 60€/h ein? Wo lebst denn du? Ich wandere sofort aus!
Lieber garkeinen als so einen Unterrricht.
MoepMeep is offline  
Thanks
1 User
Old 10/26/2012, 20:54   #13
 
RunzelEier's Avatar
 
elite*gold: 0
Join Date: Dec 2010
Posts: 1,196
Received Thanks: 682
wenn der lehrer meint, dass wäre c#, dann sollte er in der tat nicht unterrichten.

hier mal mein code einwenig erläutert:
bei diesem code geht es um die gleichverteilung der Ergebnisse
wenn modulo 5, wie in dem beispiel über mir, kein ganzer teiler von RAND_MAX ist hast du keine gleichverteilung der ergebnisse.

rand() gibt eine zahl zwischen 0 und RAND_MAX zurück
daher macht die funktion uniform_deviate aus dem seed eine zahl zwische 0 und 1.

um nun auf eine zahl zwischen 1 und 4 zu kommen
müssen wir das ergebnis noch einwenig bearbeiten.
uniform_deviate gibt einen wert zwischen 0 und 1 zurück.

wenn wir einen wert zwischen 1 und 2 zurück bekommen wollen können wir dem ergebniss einfach 1 addieren.
wenn wir einen wert zwischen 2 und 3 zurück bekommen wollen können wir das ergebniss einfach mit 2 addieren.
wenn wir einen wert zwischen 76 und 77 zurück bekommen wollen, ...
das prinzip sollte klar sein.

wenn wir einen wert zwischen 0 und 2 zurück bekommen wollen können wir das ergebniss einfach mit 2 multiplizieren.
wenn wir eine wert zwischen 0 und 4 zurück bekommen wollen können wir das ergebniss einfach mit 4 multiplizieren.

wenn wir beides verbinden kommen wir auf den code, den ich vorhin gepostet habe.
wir erzeugen uns mit uniform_deviate eine zahl zwischen 0 und 1, multiplizieren das mit 3 und erhalten eine zahl zwischen 0 und 3.
anschließend addieren wir noch 1 und erhalten eine zahl zwischen 1 und 4

double uniform_deviate ( int seed )
{
return seed * ( 1.0 / ( RAND_MAX + 1.0 ) );
}
int r = 1 + uniform_deviate( rand() ) * ( 4 - 1 ) ;
RunzelEier is offline  
Thanks
1 User
Old 10/27/2012, 19:29   #14
 
elite*gold: 0
Join Date: Jan 2011
Posts: 362
Received Thanks: 41
Danke habs nun hinbekommen , könnte mir nur jemand dabei helfen das die farben nicht doppelt ausgewählt werden?;O
Rullx3 is offline  
Old 10/27/2012, 20:18   #15
 
elite*gold: 5
Join Date: Sep 2006
Posts: 385
Received Thanks: 218
Was hälst du davon dein Hirn selber mal zu benutzen? Mach dir ein paar Gedanken, programmiers runter und wenn es dann noch Fragen gibt, dann postest du deinen Code und sagst uns wo es noch hängt.
Wir machen hier nicht deine Hausaufgaben für dich, nur damit du dann in den Prüfungen durchfällst.
Nightblizard is offline  
Reply


Similar Threads Similar Threads
GG:mastermind
06/05/2012 - Diablo 3 Trading - 5 Replies
nachdem ich von mastermind gescamt worden habe ich ihn einfach nochmal angeschrieben.schon witzig wie er das gleiche nochmal versucht.Vorsicht !!!! Beweise sind vorhanden.
Mastermind bug / Hack
05/04/2012 - League of Legends - 10 Replies
Funktioniert das mit Mastermind noch !? , sehe auf PBE viele die das noch haben , oder liegt es daran das die noch nicht gebannt sind!? Weil laut LoL-Forum wurde es ja gepatched.
Building and Planning Your Mastermind
03/03/2006 - General Gaming Discussion - 0 Replies
The Mastermind Class For those of you familiar with WoW, and SWG the Mastermind is the CoV equivalent of a creature handler (SWG) or a hunter (WoW). Essentially, they are a ranged class who has the aid of a ?pet? to do the tanking for them as they pick off the mobs with their ranged weaponry. In addition, Masterminds also receive a bit of a bonus and actually have the power to buff themselves and group members. They are an extremely complex class of character to control, and provide you...
CoV Mastermind Guide 2.0
11/26/2005 - General Gaming Discussion - 0 Replies
Mastermind Guide 2.0 Henchmen Powers Each Mastermind powerset has three Henchmen powers, the first one is available at level 1, the second is available at level 12, and the last one is available at level 26. The L1 Henchmen power can summon up to three Henchmen. You get one Henchman at level 1 to 5. At level 6 you get your second L1 Henchman, and at level 18 you get your third. When you get your second L1 Henchman, they are both summoned at 1 level below you. When you get your third L1...
Mastermind Free XP
11/22/2005 - General Gaming Discussion - 0 Replies
Ok this one is a little complex. You must be a MasterMind. You do the bank robery levels. Now after you break open the vault but before you steal the treassure you will need to run back out of the room and into the halls proceeding the vault. Find a place where the hall makes an L. Stand next to the turn in the hall and set your pets on agressive. They will need to be strong enough to survive a single wave. Now SOMETIMES the mission becomes bugged. Out of 5 tries it did this 2 times. The enemys...



All times are GMT +2. The time now is 13:02.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.