lukrake characters generen

Status
Niet open voor verdere reacties.

praganonut

Gebruiker
Lid geworden
22 dec 2006
Berichten
80
Hallo mensen, ik heb een vraagje...
Ik probeer een engine te bouwen die lukrake characters genereert.
Met random kan je verschillende nummers genereren maar andere characters niet.

Kan iemand mij in de richting duwen waar ik ongeveer moet kijken? Want ik weet het niet.
 
Ik ken C++ niet maar het heeft vast net als VB een fuctie die nummers om kan zetten naar Characters.

In VB is dat CHR

SucZeven
 
Via random kun je ook gewoon karakters genereren hoor.

Code:
       srand(time(NULL));
       int ch;
       ch=rand()%128;
       // controleren of ch de waarde bevat die jij wilt tonen -> (char)50 = 2; (char)65 = A
       if(ch >= 65 && ch <= 90) cout << (char)ch; // A t/m Z
 
In CoD_NL's voorbeeld kun je ook:
Code:
ch=rand()%128;
if(ch >= 65 && ch <= 90) cout << (char)ch;
vervangen door:
Code:
ch = rand() % 26 + 65; // Hierdoor zit het random getal altijd tussen de 65 en 90
cout << (char)ch;
Kijk op asciitable.com om te kijken welke getallen bij welke letters horen.
 
Laatst bewerkt:
In CoD_NL's voorbeeld kun je ook:
Code:
ch=rand()%128;
if(ch >= 65 && ch <= 90) cout << (char)ch;
vervangen door:
Code:
ch = rand() % 26 + 65; // Hierdoor zit het random getal altijd tussen de 65 en 90
cout << (char)ch;
Kijk op asciitable.com om te kijken welke getallen bij welke letters horen.

Uiteraard is dat mogelijk. Maar de mijne is heel makkelijk uit te breiden naar alle toetsen van het toetsenbord. Als dit uiteraard gewenst is. Als je bijvoorbeeld een serie die uit 0-9/A-Z/a-z(niet alle toetsen dus) bestaat wilt genereren dan doe je iets als:

Code:
if(ch >= 48 && ch <= 57 || ch >= 65 && ch <= 90 || ch >= 97 && ch <= 122) cout << (char)ch << endl;
 
Laatst bewerkt:
Om het simpel te houden kan je ook de cijfers vervangen door karakters vb:

Code:
ch = rand() % 26 +[COLOR="Red"] 'A'[/COLOR]; // Hierdoor zit het random getal altijd tussen de 'A' en 'Z'
cout << (char)ch;

of nog
Code:
if(ch >=[COLOR="#ff0000"] '0' [/COLOR]&& ch <= [COLOR="#ff0000"]'9'[/COLOR] || ch >=[COLOR="Red"] 'A'[/COLOR] && ch <= '[COLOR="#ff0000"]z'[/COLOR]) cout << (char)ch << endl;

alle cijfers + letters van A tot z ( m.a.w. alle hoofd en kleine letters )

Het voordeel hiervan is dat je niet de ascii-waardens moet onthouden maar gewoon met de karakters kunt werken. Gevolg is dus dat de code leesbaar wordt voor niet ingewijde.

Dit werkt omdat de compiler hier automatisch naar het grotere type cast, hier dus een int
 
Ah, okay... Ik nam aan dat random alleen nummers aankon(komt door documentatie).

Maar dit is wat ik zocht, thnx! :cool::thumb:
 
Om het simpel te houden kan je ook de cijfers vervangen door karakters vb:

Code:
ch = rand() % 26 +[COLOR="Red"] 'A'[/COLOR]; // Hierdoor zit het random getal altijd tussen de 'A' en 'Z'
cout << (char)ch;

of nog
Code:
if(ch >=[COLOR="#ff0000"] '0' [/COLOR]&& ch <= [COLOR="#ff0000"]'9'[/COLOR] || ch >=[COLOR="Red"] 'A'[/COLOR] && ch <= '[COLOR="#ff0000"]z'[/COLOR]) cout << (char)ch << endl;

alle cijfers + letters van A tot z ( m.a.w. alle hoofd en kleine letters )

Het voordeel hiervan is dat je niet de ascii-waardens moet onthouden maar gewoon met de karakters kunt werken. Gevolg is dus dat de code leesbaar wordt voor niet ingewijde.

Dit werkt omdat de compiler hier automatisch naar het grotere type cast, hier dus een int

Ten eerste post je eigenlijk hetzelfde als Arjan B postte, aangezien 'A' == 65;

Code:
ch = rand() % 26 + 65; // Hierdoor zit het random getal altijd tussen de 65 en 90
cout << (char)ch;

Ten tweede is het via mijn methode makkelijk om alle toetsen van het toetsenbord te gebruiken. Maar 't is net waar de TS voor kiest.
 
Ten eerste post je eigenlijk hetzelfde als Arjan B postte, aangezien 'A' == 65;

Code:
ch = rand() % 26 + 65; // Hierdoor zit het random getal altijd tussen de 65 en 90
cout << (char)ch;

Ten tweede is het via mijn methode makkelijk om alle toetsen van het toetsenbord te gebruiken. Maar 't is net waar de TS voor kiest.

Iemand is in zijn ego gekrenkt :D.
Ten eerste ik weet dat ik een repo doe, ik wil gewoon aantonen dat je evengoed 'A' kan gebruiken i.p.v. 65.

En die ten tweede snap ik niet zo goed. Waarom is het makkelijker om alle toetsen te gebruiken?
 
Code:
srand(time(NULL));
int ch = rand()%128;
if(ch >= 33 && ch <= 126) cout << (char)ch;

Bovenstaande lijkt me een stuk makkelijker dan iets in de vorm van:

Code:
srand(time(NULL));
int ch = rand()%128;
if(ch >= 'A' && ch <= 'Z' && ch >= 'a' && //etc

Dus of mijn ego nu echt gekrenkt was :P
 
Code:
srand(time(NULL));
int ch = rand()%128;
if(ch >= 33 && ch <= 126) cout << (char)ch;

Bovenstaande lijkt me een stuk makkelijker dan iets in de vorm van:

if(ch >= '!' && ch <= '~') cout << (char)ch;

Doet hetzelfde hoor. Maar idd, als ge niet alleen alfanumerieke of numerieke karakters gebruikt en toch een "range" wilt hebben ( zonder commentaar toe te voegen over wat voor range we spreken ) is het handig om getallen te gebruiken. In alle andere gevallen ga ik toch nog steeds voor karakters hoor, kwestie van mijn ego wat te sparen ;)
 
if(ch >= '!' && ch <= '~') cout << (char)ch;

Doet hetzelfde hoor. Maar idd, als ge niet alleen alfanumerieke of numerieke karakters gebruikt en toch een "range" wilt hebben ( zonder commentaar toe te voegen over wat voor range we spreken ) is het handig om getallen te gebruiken. In alle andere gevallen ga ik toch nog steeds voor karakters hoor, kwestie van mijn ego wat te sparen ;)

:o

Stom van me. "t Is inderdaad hetzelfde. Al ga ik dan zelf weer voor het numerieke.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan