Konsolowa Gra RPG - Atrybuty

0

Cześć postanowiłem dodać atrybuty do mojej gry

Na początku chciałem by za każdy 1 pkt inteligencji dodawało 1 pkt obrażeń.

Taki kodzik dałem:

while (true)
{
    character.dmg += character.inta
    break;
}

https://github.com/Harertz/Games/blob/master/ConsoleRPG/Program.cs
Linia 241

Ale nie działa tak jak powinno... Niby dodaje, ale też jakoś dziwnie mnoży.

https://github.com/Harertz/Games/tree/master/ConsoleRPG

2

Jaka jest idea pętli w Twoim kodzie? Zwłaszcza tej nieskończonej tutaj, ale i tych powyżej? Wiesz co to są instrukcje warunkowe, bo ich używasz powyżej… Dlaczego nie tu?

Swoją drogą, jak na GitHubie klikniesz na numer linii, to otrzymasz link prowadzący bezpośrednio do niej.

0

Pętla do sprawdzania i wykonywania w nieskończoność. Jak dawałem warunki to wykonywało się to tylko raz i koniec.

3

@Wielki Zły Rozpruwacz: Jak w większości Twoich postów wcześniej, rada jest jedna: sięgnij do jakiejś porządnej książki, a nie tylko do kursu na 4p.
Twoja pętla wykona się tylko jeden raz, a to tak jakbyś jej w ogóle nie napisał vide break.

Ten kod:

while (true)
{
   character.dmg += character.inta
   break;
}

...jest kompletnie bez sensu.

3
Wielki Zły Rozpruwacz napisał(a):

Pętla do sprawdzania i wykonywania w nieskończoność.

Fajnie, tylko ta pętla ani nic nie sprawdza, ani nie wykonuje się w nieskończoność…

0
grzesiek51114 napisał(a):

@Wielki Zły Rozpruwacz: Jak w większości Twoich postów wcześniej, rada jest jedna: sięgnij do jakiejś porządnej książki, a nie tylko do kursu na 4p.
Twoja pętla wykona się tylko jeden raz, a to tak jakbyś jej w ogóle nie napisał vide break.

Ten kod:

while (true)
{
   character.dmg += character.inta
   break;
}

...jest kompletnie bez sensu.

Sam tej pętli nie rozumiem... No nie jest nieskończona bo jest break. Chociaż stosowałem często właśnie while(true) i wydawała się robić w nieskończoność oczywiście bez break.

1

Ano. Więc jeszcze raz — jaka idea za nią stała? Co chciałeś zrobić?

Bo opis tego, co zrobiłeś, wygląda tak: masz pętlę nieskończoną (white (true)), która wykonuje dwa polecenia — powiększa wartość character.dmgcharacter.inta i… wychodzi z pętli. Co jest równoznaczne z samym character.dmg += character.inta;. Swoją drogą — nie zjadłeś tam wskaźnika średnika? Kompiluje Ci się to wszystko?

0

Wszystko się kompiluje, zapomniałem dopisać. Co do pętli chciałem zrobić właśnie sprawdzanie w tle. Bo gdy wykonam na samym warunku to niestety, ale tlyko raz dodaje obrażenia od inteligencji a później nie chce...

1

Sprawdzanie w tle? W tle czego? Co przez to rozumiesz?

Kiedy ma się dodawać? Co chcesz osiągnąć? Bo zapisane na początku tematu „chciałem by za każdy 1 pkt inteligencji dodawało 1 pkt obrażeń” realizuje właśnie character.dmg += character.inta; — jak masz jeden punkt inteligencji, to zwiększy obrażenia o jeden, jak dwa to o dwa, a jak czterdzieści dwa to o czterdzieści dwa.

0

Jak dodam to do pętli while ze switchem tym to sie mnoży dmg ciągle w nieskonczonosc, a jak przed to tylko raz i koniec... Mogę mieć i 100 inteligencji a i tak bedzie 11 obrażeń.

1

Do instrukcji warunkowych służy if a nie while.

Jeśli natomiast masz problem z wyobrażeniem sobie, co się kiedy wykonuje, to polecam użycie debuggera i przejście debuggerem po kolejnych krokach wykonywania programu (zamiast uruchamiać program ciurkiem, będziesz widzieć, która instrukcja się po której wykonuje). Wtedy nawet jeśli nie rozumiesz do końca pętli/wyrażeń warunkowych, to naocznie zobaczysz, jak się po kolei wykonują i może ci się coś rozjaśni.

0

Zrobiłem tak: i działa

public int dmg
        {
            get { return 10 + inta + 2 * str + dex; }
            private set { }
        }

Nie wiem co to do końca, ale działa. Dziękuję wam wszystkim którzy się tutaj udzielili.

1 użytkowników online, w tym zalogowanych: 0, gości: 1