Skocz do zawartości

[c++] 3 pytania


Yewhral

Polecane posty

Zacznijmy od tego że z programowaniem dopiero zaczynam i w niektorych miejscach mogłem gdzieniegdzie przynoobić. NArazie to konsolowa wersja aplikacji, ale jak sie poducze to przeniose to do okienka.

Otóż jest to oddzielny plik calosci (no powiedzmy ze robie gre) i tu jest plik w ktorym na such chcialbym zrobic system obrazen i teraz tak kod wyglada na razie tak, ale w pewym miejscu po prostu sie zatrzymuje bo nijak nie moge zrobić (opis w czym chciałbym żebyście pomogli jest w komentarzu)

#include <cstdlib>
#include <stdlib.h>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{


int hp, dmg, hpmob, dmgmob, maxrandhp, maxranddmgmob, maxranddmg, decyzja, weapon;

start:
{
cout << "Dzisiaj walczysz z:"<<endl; // dobor przeciwnika
cout << "1 : Diablik (hp=15 dmg=7)"<<endl;
cout << "2 : Kolczasty szczur (hp=25 dmg=10)"<<endl;
cout << "3 : Szkielet (hp=40 dmg=15)"<<endl;
cout << "4 : Monstrualna bestia (hp=65 dmg=25)"<<endl;
cout << "kazdy inny klawisz konczy program"<<endl;
cin >> decyzja;

switch (decyzja) {
case 1: maxrandhp = 15;
maxranddmgmob = 7;
break;
case 2: maxrandhp = 25;
maxranddmgmob = 10;
break;
case 3: maxrandhp = 40;
maxranddmgmob = 15;
break;
case 4: maxrandhp = 65;
maxranddmgmob = 25;
break;
default: system("PAUSE");
return EXIT_SUCCESS; ;
}
hp = 50; // hp gracza
srand( (unsigned)time( NULL ) ); // zapowiedz funkcji rand
hpmob = rand() % maxrandhp; // hp moba przyjmuje losowa wartosc miedzy 0 a maxrandhp
dmgmob = rand() % maxranddmgmob; // dmg moba przyjmuje losowa wartosc miedzy 0 a maxranddmgmob
bron:
cout<<"Wybierz bron by zaatakowac przeciwnika:"<<endl;
cout<<"1- Krotki miecz"<<endl<<"2- Kij"<<endl<<"3- Fireball"<<endl;
cin >> weapon;
switch (weapon) {
case 1: maxranddmg=4 ;
dmg= rand() % maxranddmg +3; // dmg gracza przyjmuje losowa wartosc miedzy X a maxranddmg
break;
case 2: maxranddmg=5 ;
dmg= rand() % maxranddmg +1;
break;
case 3: maxranddmg=5 ;
dmg= rand() % maxranddmg +7;
break;
}
cout<<"Zadales obrazen: "<< dmg<<endl;
cout<<"Hp pozostale przeciwnikowi:"<<hpmob-dmg<<endl;
cout<<"Wrog zadaje obrazen:"<<dmgmob<<endl;
cout<<"HP pozostalo:"<<hp-dmgmob<<endl;


goto bron;


/* OK NIE KAUPJE
A) czy dopuszczalne i sensowne jest w tym wypadku goto?
B) JAK ZROBIC ZEBY TO CIAGLE ODEJMOWALO HP A NIE ZE PO KAZDEJ TURZE JEST RESTART(ciagle zaczyna sie od miejsca w ktorym wszyscy maja max hp), mimo ze niemile widziane goto przenosi do miejsca gdzie hp juz dawno jest ustalone i nic sie z nim nie powinno dziac oprocz obnizania
C) JAK ZALATWIC BY W SYTUACJI GDZIE MOB ALBO GRACZ TRACI WSZYSTKIE HP BYL KONIEC, probowalem z warunkami, ale przy tworzeniu petli sam sie zapetlilem i mimo kilku prob nie doszedlem jak to zrobic*/




}



system("PAUSE");
return EXIT_SUCCESS;
}

Link do komentarza
Udostępnij na innych stronach

1) Goto nie jest sensowne poniewaz wynika z niego ze jestes bez obrazy noobem. Czyli chwytasz sie najprostrzego sposobu (o czym piszesz posrednio dalej) ktory w tym przypadku jest zly. Uzyj jakiejs petli np for(;;) albo while.

2) nigdzie nie pomniejszasz wartosci zmiennej HP. wyswietlasz tylko roznice hp-dmgmob co wcale nie zmienia hp.

3) narysuj na kartce po kolei co ma program robic, porysuj jak ma skakac itd. dopiero wez sie za pisanie.

Always Dark<br />u1_tt_logo.png banner-1.pngexFabula-banner.pngson_banner_ubersmall.jpg

Link do komentarza
Udostępnij na innych stronach

Dzięki wielkie za rady. Samemu to ze dwa dni bym pkt 2) dochodził :P

goto zastąpiłem do... while'em

 

teraz wszystko śmiga nawet uniki zrobiłem

 

ale za pisanie to się chyba jednak wezme jak klasy zrozumiem bo troche za dużo tych zmiennych sie zrobiło i wplata sie chaos powoli...

Ten projekt z zasady miał mnie czegoś nauczyć i nauczył :D

 

Kiedy czytam inne tematy, te bardziej zaawansowane i mało rozumiem na pocieszenie zostaje mi fakt, że dopiero do liceum ide od września, z programowaniem zaczynam dopiero i mam czas na nauke tego co mnie interesuje, a nie jak niektórzy z przymusu na szybko chcą coś mieć napisane i naumiane..

Nie wiem po co powyższy akapit napisałem =='

Link do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

×
×
  • Utwórz nowe...