Argumenty w funkcjach w dwie strony.
Ostatnio zmodyfikowano 2019-02-16 12:57
terrabith12345 Temat założony przez niniejszego użytkownika |
Argumenty w funkcjach w dwie strony. » 2019-02-15 12:04:07 Witam,
Mam problem z argumentami funkcji. W jedną stronę jest jak najbardziej zrozumiałe: liczba1 jest zwiększana przez funkcję void
void zwieksz( int & liczba ) { liczba += 10; } int main() { int liczba1; zwieksz(liczba1); }
Ale jeżeli chciałbym zrobić coś bardziej rozbudowanego to już mam problem. liczba1 miała by być wyświetlana i aktualizowana w trzeciej funkcji na podstawie pierwszej i drugiej to juz mam błąd że int wyswietlanie() nie ma zadeklarowanej zmiennej. Jak zwiększyć liczba1 na podstawie funkcji void i cały czas ją wyświetlać w int wyswietlanie(). Chodzi tutaj o grę i powracalnym menu a int wyswietlanie() to zasoby np. złota które cały czas będą na górze wyświetlane i odświeżane gdy nastąpi zwiększenie.
Działa to na zmiennej globalnej ale wszędzie piszą żeby tego nie używać.
void zwieksz( int & liczba ) { liczba += 10; } int wyswietlanie() { cout << liczba1 \\ tutaj mam błąd i nie chce to działać.......... } int main() { int liczba1; zwieksz(liczba1); \\ gdy jakiś tam warunek to odbywa się zwiększenie ale wyświetlać ma ją w funkcji wyświetlanie. } |
|
pekfos |
» 2019-02-15 12:21:19 Twój 'problem z argumentami' polega na tym, że ich nie używasz. |
|
terrabith12345 Temat założony przez niniejszego użytkownika |
» 2019-02-15 12:49:05 jak zrobić aby ta zmienna się tam wczytywała?
chodzi o to, że w main będzie cała gra a w wyświetlanie będą podstawowe surowce które będą się aktualizować jeżeli gracz wykona czynność w main i surowiec się zwiekszy w void. normalnie to wynik wróci do main ale ja chce żeby ten main przekazał go do wyświetlanie. gra ma czyścić ekran co wybór a funkcja wyświetlanie będzie wyświetlana od nowa non stop aby pierwsza linia zawierała aktualne surowce.
i jestem w kropce. |
|
pekfos |
» 2019-02-15 13:22:47 |
|
terrabith12345 Temat założony przez niniejszego użytkownika |
» 2019-02-15 13:28:26 Ja właśnie wracam z tej strony i tam jest taki ładny dopisek:
,,Argumenty umożliwiają komunikację w dwie strony, jednak w tym rozdziale zajmiemy się tylko i wyłącznie komunikacją w jedną stronę, tj. przekazywaniu danych do funkcji. Dlaczego? Bo tak :) ''
A ja właśnie potrzebuje z void do main (w jedna stronę) ale z main do wyświetlanie (w drugą stronę).
Chociaż proszę o jakieś nakierowanie, resztę sam rozkminię.
Zmienna z funkcji 3 do funkcji 1 (tutaj obliczanie) potem z funkcji 1 do funkcji 3 (wynik) i z funkcji 3 do funkcji 2 (przekazanie wyniku). 3 > 1 > 2
funkcja 1 - obliczanie obliczanie złota
funkcja 2 - wyswietlanie stałe menu u gory ekranu wyświetlanie złota non stop
funkcja 3 - głowna brawo, zdobyles złoto zmienna leci do funkcji 1 i wraca z wynikiem. wyslij wynik zlota do funkcji 2 |
|
pekfos |
» 2019-02-15 13:49:21 |
|
terrabith12345 Temat założony przez niniejszego użytkownika |
» 2019-02-16 09:28:11 Hej,
Zrobiłem tak jak radziłeś.
1) int main() - zaczyna grę i są tylko dwie opcje: start i przekierowanie do int gra() lub wyjście. 2) int gra() - tutaj zaczyna się całe menu gry i całkiem u góry aktualny stan złota. Gdy dojdziemy do mapy to znajdujemy złoto i odpala się trzecia funkcja int zwiekszaniezlota() 3) int zwiekszaniezlota() - tutaj złoto jest dodawane ale muszę ustanowić zmienną bo mam błąd więc daje int zloto = 0 i tu jest problem. Za każdym znalezieniem złota powstaje zmienna z zerową wartością. Jak to zrobić aby w int gra() zmienna zloto1 cały czas się aktualizowała i trzymała wartość. Gdzie zainicjować zmienną zloto w zwiekszanie zlota - bez tego nie chce mi zwiekszac.
Wiem że to jest banalne ale lubię się uczyć pisząc coś sam i dochodzić co jest nie tak ale tutaj mam duży problem.
To wszystko można zrobić na zmiennej globalnej i tak widzę na YT ludzie robią gry ale na kursach jest napisane aby tego unikać.
#include <iostream> #include <windows.h>
using namespace std;
float zwiekszaniezlota() { int zloto = 0; zloto += 10; return zloto; } int gra() { int zloto1 = zwiekszaniezlota(); cout << "Ilosc zlota: "<< zloto1 << "\n"; // aktualny stan złota cout << "1. Postac. \n"; cout << "2. Mapa. \n"; int decyzja; cin >> decyzja;
switch (decyzja) { case 1: system("cls"); cout << "Prosze czekac na aktualizacje gry"; Sleep(1000); system("cls"); gra();
case 2: system("cls"); cout << "brawo - znajdujesz złoto"; Sleep(1000); zwiekszaniezlota(); // uruchamia sie funkcja zwiekszaniazlota system("cls"); gra(); } } int main() //początek gry - rozpoczęcie i przekierowanie do menu gry albo wyjście z programu. { cout << "1. Rozpocznij gre.\n"; cout << "2. Wyjdz z gry.\n"; int wybor; cin >> wybor; switch (wybor) { case 1: system("cls"); gra(); //przejście do początku gry case 2: cout << "Koniec gry."; break; } }
|
|
pekfos |
» 2019-02-16 12:57:40 int zwiekszaniezlota() - tutaj złoto jest dodawane ale muszę ustanowić zmienną bo mam błąd więc daje int zloto = 0 i tu jest problem. Za każdym znalezieniem złota powstaje zmienna z zerową wartością. Jak to zrobić aby w int gra() zmienna zloto1 cały czas się aktualizowała i trzymała wartość. |
void zwieksz( int & liczba ) { liczba += 10; } |
|
|
« 1 » |