• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

system walki początkujący programista

Object Storage Arubacloud
0 głosów
361 wizyt
pytanie zadane 4 listopada 2016 w C i C++ przez emce1996 Nowicjusz (170 p.)

cześć mam takie pytanko bo się zastanawiam jak zrobić system walki i napisało mi się cośtakiego

#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;
int walka( int t[], int rozmiar )
{
    srand( time( NULL ) );
    int przedzial =( rand() % 3 ) + 0;
    t[ 0 ] =( rand() % 10 ) + 0; //slabe
    t[ 1 ] =( rand() % 20 ) + 11; //srednie
    t[ 2 ] =( rand() % 30 ) + 31; //mocne
    if( przedzial == 0 )
         cout << "slabo ";
    else if( przedzial == 1 )
         cout << "srednio ";
    else if( przedzial == 2 )
         cout << "mooocno ";
    
    przedzial = t[ przedzial ];
    if( przedzial == 0 )
         cout << endl << endl << " potknales sie czy co 0.o " << endl << endl;
    
    cout << " uderzyles za: " << przedzial;
    return przedzial;
}

int main()
{
    int tablica[ 3 ];
    int suma = 0;
    do
    {
        cout << " wpisz 1 aby zatakowac. ";
        int atak;
        cin >> atak;
        if( atak == 1 )
             suma = suma + walka( tablica, 3 );
        
        cout << " przeciwnikowi zostalo :  " << 1100 - suma << " zycia" << endl;
        
    } while( suma < 1100 );
    
    return 0;
}

w dobrym kierunku idę ?? chodzi mi żeby ciosy były dzielone na słabe średnie i mocne dodam że jestem początkującym programistą ;D 

1 odpowiedź

0 głosów
odpowiedź 4 listopada 2016 przez pewolt Mądrala (5,790 p.)
wybrane 5 listopada 2016 przez emce1996
 
Najlepsza
Witam

Nie jest źle :) lecz nie mam zielonego pojęcia poco zrobiłeś zmienna tablica i rozmiar.

Można by zoptymalizować to i owo ale ogólnie jest dobrze.
komentarz 4 listopada 2016 przez emce1996 Nowicjusz (170 p.)
tablice zrobiłęm dlatego żę są te obrażenia podzielone na słabe średnie i mocne no i przerabiam ten temat akurat ale tak teraz jak na to patrze to też nie wiem po co rozmiar, może dlatego że wcześniej robiłem pętle i się przydaje ta zmienna xD dzięki za odpowiedź. a bez tablicy to jak by to miało wyglądać ?
1
komentarz 4 listopada 2016 przez niezalogowany
Załóżmy masz jakiś określony maksymalny atak. Losujesz 1 liczę w zakresie od 0 do maksymalnego ataku czyli nasz atak i sprawdzasz jaki duży jest. Przykładowo jeżeli większy niż 2/3 maksymalnego to piszesz "mocno".
1
komentarz 4 listopada 2016 przez pewolt Mądrala (5,790 p.)

a bez tablicy to jak by to miało wyglądać ?

wywal tablice z 29 linijki i przenieś tablice z linijki 5 o tak:

int walka()
{
    int t[3];
    srand( time( NULL ) );

 

komentarz 4 listopada 2016 przez emce1996 Nowicjusz (170 p.)
edycja 4 listopada 2016 przez emce1996

yhm zrobione teraz mam taki problem

#include <iostream>
#include <ctime>
#include <cstdlib>
#include <windows.h>
using namespace std;
//void przeciwnik()
//{
   // int tablica[3];
   // cout << "przeciwnik atakuje: ";
     //walka( tablica, 3, 0 );

//}

int walka( int a, int b)
{
    int t[3];
    srand( time( NULL ) );
    int przedzial = ( rand() % 3 ) + 0;
    t[0] = ( rand() % a ) + b; //slabe
    t[1] = ( rand() % a + 10 ) + b + 11; //srednie
    t[2] = ( rand() % a + 20 ) + b + 21; //mocne
    if(przedzial == 0)
    cout << "slabo ";
    else if(przedzial == 1)
    cout << "srednio ";
    else if(przedzial == 2)
    cout << "mooocno ";

    przedzial = t[przedzial];
    return przedzial;
}
//void Gracz()
//{
    //int hp = 100;
    //int mana = 0;

//}

int main()
{
    //int tablica[ 3 ];
    int suma = 0;
    int hit = 0;
    do
    {
    cout << " wpisz 1 aby zatakowac. ";
    int atak;
    cin >> atak;
    if( atak == 1 )
     suma = suma + walka( 10, 0 );
     cout << "uderzyles za: " << suma;

     if( suma == 0 )
    cout << endl<< endl<< " potknales sie czy co 0.o " << endl << endl;

     cout << " przeciwnikowi zostalo :  " << 1100 - suma << " zycia" << endl;
     Sleep(1000);
     hit = hit + walka( 3, 0 );
     cout << "przeciwnik uderzyl za: " << hit << endl;
     if(hit == 0)
     cout<<endl<<endl<<"masz szczescie wyglada na to ze twoj przeciwnik nie jest w najlepszej formie"<<endl<<endl;
     cout << "zostalo ci " << 500 - hit << " zycia" << endl;

    }while( suma < 1100 && hit < 500 );
     return 0;
}

obrażenia się sumują za pierwszym razem działało ale jak dodałem przeciwnika który nam zadaje obrażenia to postanowiły się sumować ;D 

a ja głupi jestem ;D ale chętnie poczytam (wcześniej wyświetlałem info o obrażeniach w funkcji a w mainie to sumowałem jak dodałemm przeciwnika to przełożyłem wiadomość o obrażeniach do main() dlatego błąd heh

komentarz 4 listopada 2016 przez emce1996 Nowicjusz (170 p.)
yhm dzięki ci bardzo, jutro nad tym pomyśle i się pokombinuje ;d złapałem zajawkę hehe
komentarz 4 listopada 2016 przez emce1996 Nowicjusz (170 p.)
a ja głupi jestem ;D ale chętnie poczytam (wcześniej wyświetlałem info o obrażeniach w funkcji a w mainie to sumowałem jak dodałemm przeciwnika to przełożyłem wiadomość o obrażeniach do main() dlatego błąd heh
1
komentarz 4 listopada 2016 przez draghan VIP (106,230 p.)

Radził bym też nie tworzyć zmiennych w jakichkolwiek pętlach ponieważ program zacznie zżerać coraz więcej ramu.

Nieprawda.

komentarz 5 listopada 2016 przez pewolt Mądrala (5,790 p.)
O matko..

Faktycznie, przepraszam D:

Jest tak przy zmiennych dynamicznych podczas dodawania nowych elementów
1
komentarz 5 listopada 2016 przez emce1996 Nowicjusz (170 p.)
nie szkodzi przyjdzie czas na to ;D na razie nie wiem co to zmienna dynamiczna hehe dziękuje wszystkim za odpowiedzi ;)

Podobne pytania

0 głosów
1 odpowiedź 173 wizyt
pytanie zadane 14 kwietnia 2016 w C i C++ przez niezalogowany
+2 głosów
1 odpowiedź 1,094 wizyt
pytanie zadane 20 września 2019 w Nasze projekty przez Itnes Początkujący (350 p.)
+5 głosów
5 odpowiedzi 440 wizyt
pytanie zadane 17 października 2018 w Nasze projekty przez matrix92 Nowicjusz (210 p.)

92,568 zapytań

141,422 odpowiedzi

319,637 komentarzy

61,956 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...