miten saan merkin(#) liikkumaan?
Tuo minun tekemäni ei toimi, enkä tiedä syytä. Koodi kyllä varmaan
muutenkin päin honkia...
Tässä oma sohellukseni kokonaisuudessaan
#include <ncurses.h> #include <iostream> #include <ctype.h> using namespace std; int main(int argc, char** argv) { //Lopetus int done=0; int ch=0; int x=10; int y=10; //alustetaan curses initscr(); //Näppis käyttöön keypad(stdscr, TRUE); //poistetaan painalluksista puskuri raw(); //kaiutus pois noecho(); //kursori pois näkyvistä curs_set(0); //Värit käyttöön start_color(); while(done==0) { ch=getch(); //ohjataan "pelaajaa" switch(a) { case KEY_RIGHT: //Oikalle x--; break; case KEY_LEFT: //Vasemmalle x++; break; case KEY_UP: //Ylös y--; break; case KEY_DOWN: //Alas y++; break; } mvprintw(x,y,NULL,'#'); refresh(); } //Pois curses-tilasta endwin(); //Sammutetaan oikeaoppisesti return EXIT_SUCCESS; }
Mikä hemmetin muuttuja "a"? Mitä sä tutkit switchilläs?
edit. ja mikä ihmeen syntaksi tolla sun mvprintw-funktiollas on? Miks nulli kolmantena parametrinä?
En tunne ncursesia, mutta muuttujan a paikalle olet varmaan tarkoittanut muuttujaa ch. Lisäksi while-silmukka ei koskaan pääty, koska done-muuttujaa ei muuteta millään syötteellä.
tarkoitan a:lla ch:ta. Ohjelma on vielä niin alussa,että en ole vielä laittanut siihen keskytystä.
Tutkin, mitä nappulaa painetaan.
Edit:
Muutin a:n ch:ksi ja tyypin chariksi. Tästä johtuen työntää virheilmoituksia:
h001.cpp: In function ‘int main(int, char**)’:
h001.cpp:49: warning: overflow in implicit constant conversion
h001.cpp:52: warning: overflow in implicit constant conversion
h001.cpp:55: warning: overflow in implicit constant conversion
h001.cpp:58: warning: overflow in implicit constant conversion
h001.cpp:62: error: invalid conversion from ‘char’ to ‘const char*’
h001.cpp:62: error: initializing argument 3 of ‘int mvprintw(int, int, const char*, ...)’
getch palauttaa kokonaisluvun, joten ei kannata käyttää ch:n tyyppinä charria. Suurin osa varoituksista tulee siitä, ettei ch-muuttujaan mahdu noiden näppäinvakioiden arvoja (KEY_RIGHT, KEY_LEFT,...). Viimeinen errori tulee jo aiemmin mainitsemastani asiasta.
Kokeilisit itsekin vähän miettiä, mitä teet. Tuntuu nimittäin, että olet haukkaamassa heti ohjelmointiharrastuksesi alussa liian isoja opeteltavia. Voisit ensiksi opiskella C:n perusteet ja sitten siirtyä lisäkirjastoihin. Nuokin varoitukset ovat todella loogisia pääteltäviksi...
Osaan c++ perusteet hyvin, jotan en ala c:tä opetteleen, mutt kiitos vinkeistä.
vehkis91 kirjoitti:
Osaan c++ perusteet hyvin, jotan en ala c:tä opetteleen, mutt kiitos vinkeistä.
C on osa C++:aa, joten jollet osaa C:tä, et osaa C++:n perusteita. Siitä asiasta voi tietysti olla eri mieltä, pitäisikö C opetella ensin kokonaan ja vasta sen jälkeen siirtyä C++:aan, vaiko opetella samaan aikaan sekä C:n että C++:n ominaisuuksia. Itse olen edellisen kannalla, mutta jos olet jo sisäistänyt esim. luokkien idean, ehkäpä on järkevintä jatkaa näin.
Sain toimimaan ton ukon liikutuksen...
Aihe on jo aika vanha, joten et voi enää vastata siihen.