Konsolowa Gra RPG - Atrybuty

2018-12-07 11:16
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/Ga[...]/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

edytowany 2x, ostatnio: furious programming, 2018-12-07 16:31

Pozostało 580 znaków

2018-12-07 11:20
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.

edytowany 1x, ostatnio: Althorion, 2018-12-07 11:21

Pozostało 580 znaków

2018-12-07 11:31
0

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

edytowany 1x, ostatnio: furious programming, 2018-12-07 16:31

Pozostało 580 znaków

2018-12-07 11:34
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.

Pozostało 580 znaków

2018-12-07 11:35
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ść…

Pozostało 580 znaków

2018-12-07 12:12
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.

Pozostało 580 znaków

2018-12-07 12:15
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?

edytowany 1x, ostatnio: Althorion, 2018-12-07 12:49
wskaźnika - średnika ;) - grzesiek51114 2018-12-07 12:49
A dziękuję, dziękuję. - Althorion 2018-12-07 12:50

Pozostało 580 znaków

2018-12-07 12:56
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...

edytowany 1x, ostatnio: furious programming, 2018-12-07 16:31

Pozostało 580 znaków

2018-12-07 13:05
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.

Pozostało 580 znaków

2018-12-07 13:17
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ń.

edytowany 1x, ostatnio: furious programming, 2018-12-07 16:31
Nie cytuj całego posta, jeśli odpowiadasz zaraz pod nim i do jego całości się odnosisz. - furious programming 2018-12-07 16:31

Pozostało 580 znaków

2018-12-07 16:58
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.


((0b10*0b11*(0b10**0b101-0b10)**0b10+0b110)**0b10+(100-1)**0b10+0x10-1).toString(0b10**0b101+0b100);
edytowany 1x, ostatnio: LukeJL, 2018-12-07 16:58

Pozostało 580 znaków

Liczba odpowiedzi na stronę

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