koko1987 Napisano Marzec 2, 2009 Zgłoś Share Napisano Marzec 2, 2009 Witam Jestem poczatkujacym programista. Obecnie chcialbym stworzyc gre Sudoku... I juz na samym poczatku mam problem z utworzeniem odpowiedniej planszy, tzn chcialbym aby byl do kazdego pola bardzo latwy dostep... I tutaj mam kilka pytan. Czy istnieje mozliwosc utworzenia, np. dwuwymiarowej tablicy skladajace sie z Editow? Czy moze istnieje jakies inne pole, ktore pozwoliloby stworzyc dwuwymiarowa tablice, w ktorej moglbym dodawac, sprawdzac, zmieniac pola i ich wartosc? z gory dzieki za pomoc pozdrawiam Link do komentarza Udostępnij na innych stronach More sharing options...
Toster Napisano Marzec 2, 2009 Zgłoś Share Napisano Marzec 2, 2009 StringGrid powinno sie nadac Always Dark<br /> Link do komentarza Udostępnij na innych stronach More sharing options...
tr!ckle Napisano Listopad 17, 2009 Zgłoś Share Napisano Listopad 17, 2009 Co do tablicy editów to da się. Musisz stworzyć dwywymiarową tablicę wskaźników do TEdit i zaalokować ją (najlepiej w pętli for, bo trzeba jeszcze nadać każdemu editowi osobno name itd.) Tutaj wklejam przykład mojego dawnego programu do parsowania danych z pliku csv. Operuje on na vectorach (bo ilość komórek jest nieznana, dlatego dynamicznie tworzy edity). W przypadku tablic idea jest podobna. //funkcja działa jak explode w php czyli rozdziela stringa względem jakiejś frazy - separatora void StringExplode(std::string str, std::string separator, vector<string>* results){ int found; found = str.find_first_of(separator); while(found != string::npos){ if(found > 0){ results->push_back(str.substr(0,found)); } str = str.substr(found+1); found = str.find_first_of(separator); } if(str.length() > 0){ results->push_back(str); } } //-------------------------------------------- //właściwa funkcja która tworzy edity i umieszcza je w odpowiednich miejscach vector<vector<TEdit*> > __fastcall TForm1::parser(AnsiString nazwa) { std::ifstream plik; size_t pos; std::string line; std::string end(""); std::string separator(";"); vector<string> splitted_line; vector<TEdit*> edit; vector<vector<TEdit*> > tab_edit; int lp=1; //nr pola edit //----------------------------------- plik.open(nazwa.c_str(), std::ifstream::in); if(!plik.is_open()) throw nazwa; for (int i=0;;i++) { getline(plik, line); if(line.compare(end)==0) break; StringExplode(line, separator, &splitted_line); for(int j=0; j<splitted_line.size(); j++) { edit.push_back(new TEdit(this)); edit[j]->Name = "Edit"+IntToStr(lp++); edit[j]->Left = 250+150*j; edit[j]->Top = 30*i; edit[j]->Parent = this; edit[j]->Text = splitted_line[j].c_str(); } tab_edit.push_back(edit); edit.clear(); splitted_line.clear(); } return tab_edit; } Mam nadzieję, że to ci ułatwi trochę sprawę Link do komentarza Udostępnij na innych stronach More sharing options...
Jason Napisano Listopad 17, 2009 Zgłoś Share Napisano Listopad 17, 2009 http://sourceforge.net/search/?type_of_sea...ft&words=sudoku - masz tu wszystko czego Ci potrzeba Link do komentarza Udostępnij na innych stronach More sharing options...
Polecane posty
Zarchiwizowany
Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.