Autor | Zpráva | ||
---|---|---|---|
FAKTOR2 Profil |
V javascripte som amatér. Potreboval by som danú funkciu vložiť do premenej player.Atk =
function nahoda(min,max) { return Math.floor(Math.random()*(max-min+1)+min); } Entity.prototype = entityPrototype; player = new Entity(); player.name = playerName; player.Atk = nahoda(0,3); player.Def = 1; |
||
pcmanik Profil |
#2 · Zasláno: 6. 9. 2014, 13:36:29
FAKTOR2:
player.Atk = nahoda; |
||
Radek9 Profil |
FAKTOR2:
Jestli je to myšleno tak, aby ty parametry min a max byly už předdefinovány, pak se dá využít metoda bind :
player.Atk = nahoda.bind(null, 0, 3); Edit: Díky pcmanik za upozornění. Pro verze IE starší než 9 takto: player.Atk = function () { return nahoda(0, 3); }; Toto řešení je navíc asi i trochu pochopitelnější. Je totiž na první pohled zřejmé, co to dělá. Vytváří to novou funkci, která, když se zavolá, vrátí výlsedek volání funkce nahoda s parametry 0 a 3.
|
||
pcmanik Profil |
#4 · Zasláno: 6. 9. 2014, 13:42:15
Radek9:
V tom prípade by ale bolo dobré upozorniť, že tu bude fungovat až od IE9. |
||
FAKTOR2 Profil |
#5 · Zasláno: 6. 9. 2014, 13:50:32
Hádžem to cez firefox. Pokial je player.Atk = 3; tak všetko funguje. Skúsil som aj to čo ste poradili ale stále to nejde.
var playerName = "Player"; var entityPrototype = { name:'Unknown', HP:10, Atk:0, Def:0, Lck:0, Mana:10, }; function Entity () { } function rn(min,max) { return Math.floor(Math.random()*(max-min+1)+min); } Entity.prototype = entityPrototype; player = new Entity(); player.name = playerName; player.Atk = function () { return rn(0, 3); }; player.Def = 1; enemy = new Entity(); enemy.name = 'enemy'; enemy.Atk = 3; enemy.Def = 2; var hi = function() { var healthLevelBar = document.getElementById('playerHealthLevel'); healthLevelBar.style.width = player.HP*10 + "%"; var healthLevelBar2 = document.getElementById('playerManaLevel'); healthLevelBar2.style.width = player.Mana*10 + "%"; var healthLevelBar1 = document.getElementById('enemyHealthLevel'); healthLevelBar1.style.width = enemy.HP*10 + "%"; } hi(); // PLAYER CONTROLLS // ATTACKING var playerAttack = function(){ var atkSum = player.Atk - enemy.Def, remainingHP = enemy.HP - atkSum; enemy.HP = remainingHP; if (enemy.HP<1){ alert("He's dead Jim!"); } hi(); }; |
||
Radek9 Profil |
#6 · Zasláno: 6. 9. 2014, 13:53:54
FAKTOR2:
To číslo se má generovat vždy, nebo jen jednou na začátku? Pokud vždy, tak použij moje řešení, ale v tom případě je Atk metoda a musíš ji volat:
var atkSum = player.Atk() - enemy.Def, |
||
FAKTOR2 Profil |
#7 · Zasláno: 6. 9. 2014, 14:00:48
Neviem čo stým je. Nemáš skype ? Poslal by som ti to aj celé ak by si bol ochotný sa na to pozrieť.
function Entity () { } function rn(min,max) { return Math.floor(Math.random()*(max-min+1)+min); } Entity.prototype = entityPrototype; player = new Entity(); player.name = playerName; player.Atk = function () { return rn(0, 3); }; player.Def = 1; enemy = new Entity(); enemy.name = 'enemy'; enemy.Atk = 3; enemy.Def = 2; var hi = function() { var healthLevelBar = document.getElementById('playerHealthLevel'); healthLevelBar.style.width = player.HP*10 + "%"; var healthLevelBar2 = document.getElementById('playerManaLevel'); healthLevelBar2.style.width = player.Mana*10 + "%"; var healthLevelBar1 = document.getElementById('enemyHealthLevel'); healthLevelBar1.style.width = enemy.HP*10 + "%"; } hi(); // PLAYER CONTROLLS // ATTACKING var playerAttack = function(){ var atkSum = player.Atk() - enemy.Def, remainingHP = enemy.HP - atkSum; enemy.HP = remainingHP; if (enemy.HP<1){ alert("He's dead Jim!"); } hi(); }; |
||
Kubo2 Profil |
FAKTOR2:
„Nemáš skype ?“ Viď pravidlá diskusie, najmä teda [#R.VII]: „Ak je verejný dotaz, má byť verejne dostupná aj odpoveď“. A z typografického hľadiska ťa dôrazne upozorňujem, že pred otáznikom sa nepíše medzera. Moderátor Chamurappi: A příspěvky by měly být aspoň trochu k tématu… ne jako tento.
|
||
FAKTOR2 Profil |
#9 · Zasláno: 7. 9. 2014, 08:34:28
Na koniec to funguje.
|
||
pcmanik Profil |
#10 · Zasláno: 7. 9. 2014, 09:34:43
FAKTOR2:
A aký máš teda ten výsledný kód? To začalo fungovať len tak? |
||
FAKTOR2 Profil |
#11 · Zasláno: 7. 9. 2014, 12:31:12 · Upravil/a: FAKTOR2
Len tak samozrejme nie
function rn(min,max) { return Math.floor(Math.random()*(max-min+1)+min); } Entity.prototype = entityPrototype; player = new Entity(); player.name = playerName; player.Atk = function () { return rn(0,3); }; player.Def = 1; player.h = player.HP/10; enemy = new Entity(); enemy.name = 'enemy'; enemy.Atk = function () { return rn(0,3); };; enemy.Def = 1; enemy.h = enemy.HP/10; var hi = function() { var healthLevelBar = document.getElementById('playerHealthLevel'); healthLevelBar.style.width = player.HP*10/player.h + "%"; healthLevelBar = document.getElementById('playerHealthLevel').innerHTML = Math.round(player.HP*10/player.h) + "%"; var healthLevelBar2 = document.getElementById('playerManaLevel'); healthLevelBar2.style.width = player.Mana*10 + "%"; var healthLevelBar1 = document.getElementById('enemyHealthLevel'); healthLevelBar1.style.width = enemy.HP*10/enemy.h + "%"; healthLevelBar1 = document.getElementById('enemyHealthLevel').innerHTML = Math.round(enemy.HP*10/enemy.h) + "%";; } hi(); // PLAYER CONTROLLS // ATTACKING var playerAttack = function(){ var atkSum = player.Atk() - enemy.Def, remainingHP = enemy.HP - atkSum; enemy.HP = remainingHP; var playerAttacks = function(){ var luck = Math.random(); console.log(luck); if (luck>0.9) { alert("your lucky have + 3 attack"); var luckyShot = player.Atk + 3; player.Atk = luckyShot; playerAttack(); var reversion = player.Atk - 3; player.Atk = reversion; hi(); } else { playerAttack(); hi(); } if (luck<0.1) { alert("Back luck son, you tripped on a shoelace and lost some health!"); badLuck = player.HP - 3; player.HP = badLuck; hi(); } return console.log("Enemy Health " + enemy.HP); hi(); }; Aj ked teraz by som tam potreboval dosadiť podmienku. Preto že ak playerAtk() = 0 potom napr. atkSum = 0-2 = -2 teda remainingHP= enemy.hp - - 2 = +2 var atkSum = player.Atk() - enemy.Def, remainingHP = enemy.HP - atkSum; |
||
Radek9 Profil |
#12 · Zasláno: 7. 9. 2014, 21:00:52
FAKTOR2:
Na to stačí prostě použít Math.max . V případě záporné hodnoty to vybere nulu:
var atkSum = Math.max(player.Atk() - enemy.Def, 0), remainingHP = enemy.HP - atkSum; |
||
Joker Profil |
#13 · Zasláno: 7. 9. 2014, 21:58:46
|
||
FAKTOR2 Profil |
#14 · Zasláno: 8. 9. 2014, 13:07:14
Vďaka chlapi , takto sa zrejme naučím aj ďalšiemu programovaciemu jazyku.
|
||
Časová prodleva: 10 let
|
0