Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Argumenty w funkcjach w dwie strony.

Ostatnio zmodyfikowano 2019-02-16 12:57
Autor Wiadomość
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.
}
P-173978
pekfos
» 2019-02-15 12:21:19
Twój 'problem z argumentami' polega na tym, że ich nie używasz.
P-173979
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.
P-173980
pekfos
» 2019-02-15 13:22:47
P-173981
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
P-173982
pekfos
» 2019-02-15 13:49:21
W drugą stronę jest opisane tu » Kurs C++ » Poziom 3Przekazywanie argumentów funkcji przez referencję lekcja, ale do napisania funkcji wyswietlanie() nie jest to potrzebne. Taką funkcję powinieneś być w stanie napisać po pierwszej lekcji o funkcjach.
P-173984
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;
    }
}
P-173997
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ść.
C/C++
void zwieksz( int & liczba )
{
    liczba += 10;
}
P-173998
« 1 »
  Strona 1 z 1