| 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: 12 let
|
|||
0