C++ Kruiswoordpuzzel

Status
Niet open voor verdere reacties.

GlowSolutions

Gebruiker
Lid geworden
28 mei 2009
Berichten
11
Beste mensen,

Ik ben al jaren actief als vrijwilliger voor een Scoutinggroep.
Nu hebben zij binnenkort een 'digitale opkomst'.
Dit wil zeggen dat ze dan met pc's allerlei diverse activiteiten gaan organiseren.

Nu hebben ze mij gevraagd om een kruiswoordpuzzel voor op de PC te programmeren.
Aangezien ik aardig wat basiskennis heb in C++ gaat mijn voorkeur uit naar deze taal.

Misschien is er ook wel freeware te krijgen om kruiswoordpuzzels op de PC te maken,
maar ik wil het programma echt schrijven in een soort huisstijl.

Heeft iemand misschien een opstapje voor mij?
Ik weet namelijk totaal niet waar ik moet beginnen :confused:

Alvast bedankt!
Jortijn
 
Bedankt gast0231,

Maar ik kom hier helaas niets verder mee denk ik :confused:
Ik zie nog niet direct hoe de website mij kan helpen met het programmeren van een C++ kruiswoordpuzzel.
Alhoewel die boter-kaas-eieren wel gaaf is! (maar dat is even off-topic)
 
Laatst bewerkt door een moderator:
Je kunt dus neem ik aan al overweg met forms e.d. om het grafisch in orde te maken?

Voor de logica:

Ik zou een file maken die je puzzel voorstelt. Bijvoorbeeld:

Code:
**helpmij**
**o*********
**i**********

Deze file lees je eerst uit en voor iedere asteriks (*) plaats je een zwart vakje.
Daarna mag de gebruiker een woord (of letters) invullen en dit wordt dan vergeleken met je file om te zien of het het juiste woord is.
 
Dat is dus echt een super oplossing!
Nu heb ik inderdaad ervaring met forms etc, maar niet met het uitlezen van files.
Daarnaast moet hij invulvakjes (edit box?) geven voor de tekens die geen sterretje zijn.
Als hij dat heeft gedaan moet hij bij het invullen van ieder vakje controleren of de letter
die ingevoerd is, gelijk is aan de letter in de file.

Is dit een logische beredenering?
En hoe kan ik een file (ik neem aan een kladblokfile) dan zo uitlezen en voorwaarden
geven zoals:
Code:
if (teken = *){
plaats zwart vakje;
} else {
plaats editbox;
}

Misschien een beetje veel vragen, maar ik begin er nu erg enthousiast over te worden :D
Bedankt!
 
In plaats van dat ik je op iedere vraag antwoord geef, zal ik je een stukje demo-code geven, met een hoop commentaar :). Hier zit natuurlijk niets grafisch in:

Code:
#include <string>
#include <iostream>
#include <vector>
#include <fstream>

using namespace std;

vector<string> lees_puzzel(string filename){
    vector<string> puzzel;
    ifstream infile(filename.c_str()); // open de file
    if (!infile.is_open() || !infile.good()){ // iets mis met file?
        cout << "De file kon niet geopend worden!\n";
        return puzzel;
    }
    
    string regel = "";
    while (getline(infile, regel)) //zolang er regels in het bestand zijn
        puzzel.push_back(regel); // stop deze regel in de vector 
    
    return puzzel;
}

void teken_puzzel(vector<string> puzzel){
    for (unsigned y = 0; y < puzzel.size(); y++) { // loop door alle regels
        for (unsigned x = 0; x < puzzel.at(y).size(); x++) { // loop door alle karakters per regel
            if (puzzel.at(y).at(x) == '*')
                cout << "#"; // "zwart vakje"
            else
                cout << "_"; // plek voor een letter
        }
        cout << '\n'; // na iedere regel een [enter] geven
    }
}

int main(){
    vector<string> puzzel = lees_puzzel("c:/puzzel.txt");
    teken_puzzel(puzzel);
    cin.get();
    return 0;
}

Mijn c:\puzzel.txt :
Code:
**hallo***
**o***e***
**i***i***

Mijn ouput:

Code:
##_____###
##_###_###
##_###_###
 
We komen er wel!
Ik krijg nu alleen nog even een Error van mijn CodeGear RAD Studio 2009:
Code:
[BCC32 Error] crossword1.cpp(21): E2108 Improper use of typedef 'vector<string,allocator<string> >'

Terwijl ik die includes toch wel heb geplaatst....
Raar?!

Edit:
Zou het kunnen dat ik ergens een ; mis?
 
Laatst bewerkt:
De code zoals door mij gepost zou gewoon moeten werken. Hij compiled met Visual Studio 2005 zonder warnings en errors en werkt daarna zoals gepost.

Heb je het letterlijk overgenomen?
 
Heb je het letterlijk overgenomen?

Ik heb hem letterlijk overgenomen.
Ik zal hier nog even mijn source posten zoals hij nu staat in mijn CodeGear RAD Studio 2009:
Code:
//---------------------------------------------------------------------------

#include <vcl.h>
#include <string>
#include <iostream>
#include <vector>
#include <fstream>
#pragma hdrstop

#include "crossword1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
	: TForm(Owner)
{
using namespace std;

vector<string> lees_puzzel(string filename)	{
    vector<string> puzzel;
	ifstream infile(filename.c_str()); // open de file
    if (!infile.is_open() || !infile.good()){ // iets mis met file?
        cout << "De file kon niet geopend worden!\n";
        return puzzel;
    }

    string regel = "";
    while (getline(infile, regel)) //zolang er regels in het bestand zijn
        puzzel.push_back(regel); // stop deze regel in de vector

    return puzzel;
}

void teken_puzzel(vector<string> puzzel){
    for (unsigned y = 0; y < puzzel.size(); y++) { // loop door alle regels
        for (unsigned x = 0; x < puzzel.at(y).size(); x++) { // loop door alle karakters per regel
            if (puzzel.at(y).at(x) == '*')
                cout << "#"; // "zwart vakje"
            else
                cout << "_"; // plek voor een letter
        }
        cout << '\n'; // na iedere regel een [enter] geven
    }
}

int main(){
    vector<string> puzzel = lees_puzzel("c:/puzzel.txt");
    teken_puzzel(puzzel);
    cin.get();
    return 0;
}
}
//---------------------------------------------------------------------------

Hij geeft op de regel
Code:
vector<string> lees_puzzel(string filename)	{
dus de error.
De error is dan:
[BCC32 Error] crossword1.cpp(21): E2108 Improper use of typedef 'vector<string,allocator<string> >'
[BCC32 Error] crossword1.cpp(21): E2379 Statement missing ;
 
Laatst bewerkt:
Dit was een console programma om je te laten zien wat ik in gedachten had. Je kunt het niet zomaar overkopieren in een functie van een form-applicatie.. :shocked:

Voordat ik verder ga: hoeveel ervaring heb je al met programmeren in C++ ? Als het weinig is, zou ik als ik jou was nog even snel overstappen naar python voor dit project namelijk. Dat is wat eenvoudiger en je hebt er sneller wat graphics mee op het scherm getoverd :)
 
Uiteraard!
Dit had ik natuurlijk kunnen weten...

Maar ik heb de basiskennis van C++ op dit moment op orde.
Ik denk dat dit echter te weinig is om zo'n applicatie te schrijven dus ben op dit moment
Python 3.0.1 aan het installeren.

Tijdens het typen van dit bericht is Python geïnstalleerd (heb nogal een snelle pc ;))
Zou je mij hier een beetje weg in kunnen maken?
Ik heb Python Shell opgestart, maar zie niet hoe ik hier in kan programmeren...

Alvast heel erg bedankt!
 
Poeh Poeh!
Ik heb in het weekend is even zitten prutsen met Python, maar ik denk dat ik toch
maar voor C++ moet gaan in CodeGear RAD Studio C++ builder.

Ook heb ik nog wat op Google rond gezocht maar eigenlijk niets bruikbaars vinden.
Zijn er meer codevoorbeelden of kunnen we verder borduren op het stuk wat niek_e heeft
gescript?

Ik blijf het overigens wel raar vinden dat hij hem niet goed compiled.
Hij verwijst toch niet naar een object in het form ofzo...
 
Ik blijf het overigens wel raar vinden dat hij hem niet goed compiled.
Hij verwijst toch niet naar een object in het form ofzo...

Ik vind dat helemaal niet gek. Je hebt mijn code zomaar in een functie van een formapplicatie gegooid. Daardoor gaat de compiler klagen dat je geneste functies hebt.

Ik kan je ook niet helpen hiermee, want ik gebruik zelf altijd Visual Studio voor formapplicaties.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan