Permalänk

Behöver hjälp med formula

Jag har ett spel där skadan ska baseras på ens level. Skadan ska öka mer per level dessu högre level man är. I level 1 kanske skadan är 4. D.v.s level 2-3 kanske skadan ökar med 2, level 20-21 kanske skadan ökar med 27. Kan någon hjälpa mig med detta? Är helt slut i skallen.

Visa signatur

Intel 2500k @ 3,3ghz ● ASUS 6870 1GB Crossfire ● ASUS Sabertooth P67 ● XFX 750w ● 4Gb DDR3 ● Bitfenix Outlaw

Permalänk
Medlem

x = (x + i);, där x är skadan och i level kanske?

//Edit, x och i har värdet 1 från början i nedanstående exempel.

Level 1: 2
Level 2: 4
Level 3: 7
Level 4: 11
Level 5: 16
Level 6: 22
Level 7: 29
Level 8: 37
Level 9: 46
Level 10:56

Permalänk
Skrivet av Pagodas:

x = (x + i);, där x är skadan och i level kanske?

//Edit, x och i har värdet 1 från början i nedanstående exempel.

Level 1: 2
Level 2: 4
Level 3: 7
Level 4: 11
Level 5: 16
Level 6: 22
Level 7: 29
Level 8: 37
Level 9: 46
Level 10:56


skada = (skada2 + level)? Där skada2 är förra ekvationens skada?

Visa signatur

Intel 2500k @ 3,3ghz ● ASUS 6870 1GB Crossfire ● ASUS Sabertooth P67 ● XFX 750w ● 4Gb DDR3 ● Bitfenix Outlaw

Permalänk
Medlem

Det bästa är om du kollar upp lite om talföljder och hur det ser ut. Har tyvärr inget färdigt svar till dig ^^

Visa signatur

He who fights with monsters should look to it that he himself does not become a monster. And if you gaze long into an abyss, the abyss also gazes into you.

Permalänk
Medlem

Skada för level n = skada för level n - 1 + level

Exempel från tabellen i förra posten:

Gubben har precis blivit level 3. Den nya skadan blir då:
4 (skadan från level 2) + 3 (det level gubben är).

Permalänk
Skrivet av Pagodas:

Skada för level n = skada för level n - 1 + level

Exempel från tabellen i förra posten:

Gubben har precis blivit level 3. Den nya skadan blir då:
4 (skadan från level 2) + 3 (det level gubben är).

Men då måste jag spara den gamla skadan i databasen, annars fungerar det inte.

Visa signatur

Intel 2500k @ 3,3ghz ● ASUS 6870 1GB Crossfire ● ASUS Sabertooth P67 ● XFX 750w ● 4Gb DDR3 ● Bitfenix Outlaw

Permalänk
Medlem

Ett annat enkelt sätt är ju att skadan är level * level
1
4
9
16
25
36
49
osv.

Permalänk
Skrivet av Pagodas:

Ett annat enkelt sätt är ju att skadan är level * level
1
4
9
16
25
36
49
osv.

Jo, men tyvärr blir skillnaden mellan varje level för hög.

Visa signatur

Intel 2500k @ 3,3ghz ● ASUS 6870 1GB Crossfire ● ASUS Sabertooth P67 ● XFX 750w ● 4Gb DDR3 ● Bitfenix Outlaw

Permalänk
Medlem

En formel som ökar skadan med din nivå hela tiden skulle kunna se ut såhär:
Skada = Nivå+((Nivå-1)/2*Nivå)
Skade tabellen blir så här:

Nivå Skada 1 1 2 3 3 6 4 10 5 15 6 21 7 28 8 36 9 45 10 55 11 66 12 78 13 91 14 105 15 120 16 136 17 153 18 171 19 190 20 210

Dold text
Permalänk
Medlem

EDIT: Jag kom sist...

Permalänk
Medlem
Skrivet av Björnen123:

Men då måste jag spara den gamla skadan i databasen, annars fungerar det inte.

Nej, det är en rekursiv funktion. Tänk att på level 1 så gör man 2 i skada per automagi; dvs. bas är 1 + level 1.
1: 2
2: 4
3: 7
4:11
5:16
6:22
Und so weiter; man kan då beräkna skadan med följande funktion (rekursivt är ju lite sådär prestandamässigt):

int skada(int level) {
if (level > 1) {
return skada(level-1)+level;
} else {
return 2;
}
}

Bäst (effektivast beräkningsmässigt) är väl att ha en privat variabel i sin klass (om du nu kör objektorienterat) som innehåller skadan, och en metod som anropas när man går upp en level, typ:

private int level, damage;

void levelUp() {
level++;
damage+=level;
}

Eller missuppfattade jag dig?

Visa signatur

Jag är en optimist; det är aldrig så dåligt så att det inte kan bli sämre.

Permalänk
Skrivet av henkiii:

En formel som ökar skadan med din nivå hela tiden skulle kunna se ut såhär:
Skada = Nivå+((Nivå-1)/2*Nivå)
Skade tabellen blir så här:

Nivå Skada 1 1 2 3 3 6 4 10 5 15 6 21 7 28 8 36 9 45 10 55 11 66 12 78 13 91 14 105 15 120 16 136 17 153 18 171 19 190 20 210

Dold text

Tack så mycket Nästan perfekt!

Skrivet av zyberzero:

Nej, det är en rekursiv funktion. Tänk att på level 1 så gör man 2 i skada per automagi; dvs. bas är 1 + level 1.
1: 2
2: 4
3: 7
4:11
5:16
6:22
Und so weiter; man kan då beräkna skadan med följande funktion (rekursivt är ju lite sådär prestandamässigt):

int skada(int level) {
if (level > 1) {
return skada(level-1)+level;
} else {
return 2;
}
}

Bäst (effektivast beräkningsmässigt) är väl att ha en privat variabel i sin klass (om du nu kör objektorienterat) som innehåller skadan, och en metod som anropas när man går upp en level, typ:

private int level, damage;

void levelUp() {
level++;
damage+=level;
}

Eller missuppfattade jag dig?

Håller bara på med PHP just nu så det enda sättet att "spara" på är att ladda upp det till en databas.

Visa signatur

Intel 2500k @ 3,3ghz ● ASUS 6870 1GB Crossfire ● ASUS Sabertooth P67 ● XFX 750w ● 4Gb DDR3 ● Bitfenix Outlaw

Permalänk
Medlem

(Nivå + 1) * (Nivå /2)

1 + 1 * 1/2 = 1
2 + 1 * 2/2 = 3
3 + 1 * 3/2 = 6
4 + 1 * 4/2 = 10

osv

Skrivet av henkiii:

En formel som ökar skadan med din nivå hela tiden skulle kunna se ut såhär:
Skada = Nivå+((Nivå-1)/2*Nivå)
Skade tabellen blir så här:

Nivå Skada 1 1 2 3 3 6 4 10 5 15 6 21 7 28 8 36 9 45 10 55 11 66 12 78 13 91 14 105 15 120 16 136 17 153 18 171 19 190 20 210

Dold text
Permalänk
Medlem

Du behöver en geometrisk talföljd.
Skada vid level L = 4*1,20^(L-1)

Karaktären blir alltså 20% starkare för varje level..
Total skada vid varje level blir då:

  1. 4

  2. 4.8

  3. 5.76

  4. 6.912

  5. 8.2944

  6. 9.95328

  7. 11.943935999999999

  8. 14.332723199999998

  9. 17.199267839999997

  10. 20.639121407999998

  11. 24.766945689599996

  12. 29.720334827519995

  13. 35.66440179302399

  14. 42.79728215162879

  15. 51.356738581954545

  16. 61.62808629834546

  17. 73.95370355801454

  18. 88.74444426961745

  19. 106.49333312354094

  20. 127.79199974824913

  21. 153.35039969789895

EDIT: stvafel!

Permalänk
Skrivet av dagbro:

Du behöver en geometrisk talföljd.
Skada vid level L = 4*1,20^(L-1)

Karaktären blir alltså 20% starkare för varje level..
Total skada vid varje level blir då:

  1. 4

  2. 4.8

  3. 5.76

  4. 6.912

  5. 8.2944

  6. 9.95328

  7. 11.943935999999999

  8. 14.332723199999998

  9. 17.199267839999997

  10. 20.639121407999998

  11. 24.766945689599996

  12. 29.720334827519995

  13. 35.66440179302399

  14. 42.79728215162879

  15. 51.356738581954545

  16. 61.62808629834546

  17. 73.95370355801454

  18. 88.74444426961745

  19. 106.49333312354094

  20. 127.79199974824913

  21. 153.35039969789895

EDIT: stvafel!

Du bara kom på det här, rätt ut ur skallen eller ...?
Det här är så nära jag kan komma! Tack så mycket för hjälpen!

Visa signatur

Intel 2500k @ 3,3ghz ● ASUS 6870 1GB Crossfire ● ASUS Sabertooth P67 ● XFX 750w ● 4Gb DDR3 ● Bitfenix Outlaw