Poslao: 10 Apr 2011 21:37
|
offline
- Pridružio: 15 Maj 2009
- Poruke: 963
|
Napisano: 10 Apr 2011 13:56
Poceo sam da ucim C++ i citam C++ za apsolutne pocetnike. Imam neke nejasnoce i nedoumice.
Velicina grafickog prozora i broj boja mi nisu jasni. Za sada prepisujem iz primera:
int gdriver = 9;
int gmode = 2;
initgraph(&gdriver, &gmode, "");
Sta tacno radi cleardevice(); na pocetku:
Citat:int gdriver = 9;
int gmode = 2;
initgraph(&gdriver, &gmode, "");
setbkcolor(LIGHTBLUE);
setcolor(YELLOW);
cleardevice();
Bez toga mi je crna pozadina.
Kako da obrisem neku figuru sto sam nacrtao? Ne zelim da obrisem sve, vec samo tu figuru. Da li je to moguce?
I nije receno kako da popunim npr. krug ili pravougaonik, tj., ja ne zelim da samo kruznica ili stranice pravougaonika budu obojeni, vec da bude obojeno i ono unutar.
Sad sam skinuo neku igru radjenu u C++ plus njen source, i vidim da uz nju dolaze i biblioteke i ostalo... Da li se sve to mora slati uz exe, ili je exe dovoljan (pitam za one jednostavne programe, poput kalkulatora koji moze da racuna i koren i tako to, ili neceg nacrtanog)?
EDIT:
Kad vec odgovarate (nadam se da ce neko da odgovori ) napisite i kako da testiram da li je npr. pretisnuta leva strelica ili desna, ili pak space. Za mis znam, a za tastaturu nema u knjizi. Treba figura u grafickom prozoru da mi se pomeri kad pretisnem neki taster. Mislim da ti to mogo sam, samo mi treba provera.
Polako napredujem sa ucenjem . Skinuo sam dosta tutorijala na srpskom i engleskom.....
Dopuna: 10 Apr 2011 21:37
Da pitam jos nesto...
Kako da se nasumicno izabere jedan broj izmedju nekih vrednosti? Npr. zelim da racunar izabere broj izmedju 10 i 50. Znam kako da namestim da se bira izmedju 0 i 50, ali ovo ne znam i ne vidim da pise u ovoj knjizi.
Ovo bi bilo sedmo pitanje . Pisite detaljne odovore ukoliko pisete...
Nadam se da ne vodim monolog. Ali dobro, nije prosao ni jedan dan od kada sam postavio prvo pitanje.
|
|
|
Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
|
|
Poslao: 10 Apr 2011 22:16
|
offline
- bobby
- Administrator
- Pridružio: 04 Sep 2003
- Poruke: 24135
- Gde živiš: Wien
|
Generatori slucajnih brojeva po pravilu generisu brojeve izmedju 0 i 1 (sa ogromnim brojem decimala).
Ti tvoj zeljeni opseg generisanih brojeva dobijas tako sto pomnoz taj generisani broj sa najvecim brojem iz opsega koji ti treba, i na kraju zaokruzis vrednost ukoliko ti treba ceo broj.
Sto se tice onih naredbi, izgleda da to koristis funkcije iz neke biblioteke, pitanje je samo koje.
Nadji "include" sekciju u tvojim primerima, pa da vidimo koje biblioteke koriste.
|
|
|
|
Poslao: 10 Apr 2011 22:55
|
offline
- igorpan
- Super građanin
- Pridružio: 10 Avg 2006
- Poruke: 1009
- Gde živiš: Beograd
|
broj od 0 do 50 bi pravio ovako:
int broj = rand() % 41 + 10;
Što bi značilo da on napravi nasumični neki broj. I uzme njegov ostatak pri deljenju sa 40. I onda na to doda 10. Tako da u ekstremnim slučajevima kada je ostatak 0, on pravi 0+10=10, a kada je ostatak 40, on pravi 40+10=50.
|
|
|
|
Poslao: 11 Apr 2011 07:08
|
offline
- Pridružio: 15 Maj 2009
- Poruke: 963
|
To je iz winbgim.h.
Koriste se jos i cstdlib i iostream.
To sto ste napisali pri svakom pokretanju generise iste brojeve. Zaboravio sam da napomenem da uvek trebaju da budu razliciti. Zbog toga koristim kod iz primera jedne igre radjene u C++:
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main()
{
int maxrand = 20 + 1;
srand((unsigned)time(NULL));
int j = rand() % maxrand;
cout << j << endl;
system("PAUSE");
return 0;
}
Jos samo od 10 do 50 kako bi bilo.
Tu su jos dva pitanja. Testiranje tastature i slanje programa drugim ljudima. Normalno, i ono za crtanje...
EDIT:
Evo jos jednog ptianja . Sta je sa "verzijama" C++ (da tako kazem). Naime, nabavio sam neke video tutorijale za C++ na engleskom, i tamo se koristi Visual C++ 6 kompjaler.
Problem je sto se u tutorijalima iostream predstavlja kao "iostream.h", i meni u Dev-C++ izbacuje gresku. Na Google sam nasao resenje, a to je da izbrisem ".h". E sad, procitao sam da je iostream.h "po starom" i da se "po novom" koristi samo iostream, i odatle mi ono "verzijama". To je do kompajlera ili...?
Mogu li da pratim te tutorijale, tj., da li su "zastareli"?
Nije ovo to sto sam tada nasao, ovo je nesto drugo izgooglano ::P: I get a lot of error related to iostream.h file not being found
O: iostream.h is old C++.
|
|
|
|
Poslao: 11 Apr 2011 14:38
|
offline
- igorpan
- Super građanin
- Pridružio: 10 Avg 2006
- Poruke: 1009
- Gde živiš: Beograd
|
Ne generiše iste, pokreni JEDNOM na početku programa srand(time(NULL)); i onda neće pokretati nikad iste brojeve pri komandi rand();
Možeš da koristiš, isti je C++, to su samo ti standardi kompajlera. Obično se sada koristi #include <ime> za standardne, a za svoje koristiš "lokacija/ime.h"
Bar sam ja to tako primetio pri ovim novijim IDE-ima
|
|
|
|
|
|
Poslao: 14 Apr 2011 21:22
|
offline
- Pridružio: 15 Maj 2009
- Poruke: 963
|
Napisano: 13 Apr 2011 9:37
Vi ne odgovarate na prosla pitanja, a ja imam jos jedno pitanje.
Pravim XO. Napravio sam da radi u konzolnom prozoru, ali bi zeleo da uvedem i graficki prozor.
Imam jedan problem prilikom ispisa teksta komandom outtextxy. Posto tekst nije stalan, napravio sam promenljivu tipa char koju menjam kroz program i koju ispisujem sa cout (ranije). Meni javlja da sam postavio pointere. Izbacuje mi gresku da ne moze da se izvrsi konverzija char u char*, tj. u pointer, i da ne mogu da poredim pointer i integer. A ja jos do pointera nisam stigao.
#include <winbgim.h>
#include <iostream>
using namespace std;
int main()
{
int gdriver = 9, gmode = 2;
int red = 1;
int polje = 0;
char polje1 = '1', polje2 = '2',...; //imam 9 polja...
oznaka = 'X';
bool kraj = false;
initgraph(&gdriver, &gmode, "");
setbkcolor(WHITE);
setcolor(BLACK);
cleardevice();
//deo koda namenjen crtanju table - line komanda nekoliko puta
do{
//deo koda kojim podesavam izgled teksta
outtextxy(95,55,polje1);
outtextxy(300,55,polje2);
//deo koda za ispis teksta; postoje ukupno 9 polja
if (red == 1){
cout << "Red je na X.";
red = 2;
oznaka = 'X';}
else{
cout << "Red je na O.";
red = 1;
oznaka = 'O';}
//deo koda za odabir polja i testiranje da li je unos ispravan
//deo koda koji postavlja znake X i O na tablu menjajuci vrednosti promenljivih polje1, polje2 itd.
//deo koda za proveru da li ima pobednika
}while(kraj = false);
getch();
closegraph();
return 0;
}
Dopuna: 14 Apr 2011 21:22
Nasao sam za popunjene figure. Odredjujem tip popunjenosti i boju pomocu setfillstyle(tip,boja). Umesto rectangle koristim bar a umesto circle koristim fillellipse.
Ne postoji naredba za crtanje trougla? Dok ne otkrijem drugi nacin, koristim kruzni isecak za krov.
Ajde ljudi, ima jos samo 7 pitanja . Mozda postavim pitanja na nekom drugom forumu i time povecam sansu za odgovore. Trebaju mi odgovori do srede.
|
|
|
|
Poslao: 15 Apr 2011 02:38
|
offline
- Srki_82
- Moderator foruma
- Srđan Tot
- Am I evil? I am man, yes I am.
- Pridružio: 12 Jul 2005
- Poruke: 2483
- Gde živiš: Ljubljana
|
Trougao možeš da nacrtaš linijama (3 linije), i da zatim popuniš prostor među njima koristeći funkciju floodfill.
|
|
|
|
Poslao: 16 Apr 2011 13:54
|
offline
- Pridružio: 15 Maj 2009
- Poruke: 963
|
Napisano: 15 Apr 2011 7:28
Kako treba da ide sintaksa za floodfill? Trazio sam na google ali nisam nasao. Ako moze i primer sa napisanim kodom. Evo trougla:
line(100,250,200,110);
line(200,110,300,250);
line(100,250,300,250);
Evo pitanja koja su na snazi:
1. Funkcija initgraph i njeni argumenti.
2. Bojenje trougla.
3. Testiranje da li je pritisnut odredjeni taster na tastaturi (leva strelica...).
4. Generator koji generise brojeve u nekoj granici, npr. izmedju 20 i 75.
5. Problem sa XO.
6. Kako da pokrenem neki exe fajl kog imam na disku? Na google sam nasao preko system() funkcije ali ne mogu da se snadjem.
Ostala nisu vazna.
Dopuna: 16 Apr 2011 13:54
Ne bi nikog da pozurujem posto znam da vi ne visite na kompjuteru ko ja i da imate obaveza, ali meni ovo treba do srede. Ostala su jos samo 6 pitanja. Prosla su pet dana od postavljanja teme, sto nije mnogo ali u potpunosti je odgovoreno na samo jedno pitanje .
A negde pricaju da je C++ opste prihvacen i visoko rasprostranjen programski jezik a ovde su se javila samo tri coveka . Zezam se, naravno.
|
|
|
|