Topic: Esercizio codecombat --- chi mi può dare una mano?  (Letto 61 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline lelef77

  • python unicellularis
  • *
  • Post: 5
  • Punti reputazione: 0
    • Mostra profilo
Esercizio codecombat --- chi mi può dare una mano?
« il: Maggio 17, 2019, 15:23 »
Ciao Ragazzi,
qualcuno di voi ha mai provato codecombat? Io lo sto usando per esercitarmi, ma alle volte ci sono alcene cose che non capisco proprio... o perlomeno... non capisco perchè non funzionano...
Qualcuno può darmi una mano riguardo un problema che ho riscontrato nell'ultimo esercizio del primo livello?
Praticamente dovrei sopravvivere per 40 secondi all'interno di un'arena, credo di utilizzare la sintassi corretta, ma non so perchè non funziona, mi potete dare una dritta?
Uso questo comando.


while True:
    enemy = hero.findNearestEnemy()
    if hero.isReady("cleave"):
        hero.cleave(enemy)
    else:
        hero.attack(enemy)

Offline lelef77

  • python unicellularis
  • *
  • Post: 5
  • Punti reputazione: 0
    • Mostra profilo
Re:Esercizio codecombat --- chi mi può dare una mano?
« Risposta #1 il: Maggio 17, 2019, 15:32 »
Aggiungo 2 screenshot per capire un pò meglio di che si tratta... volevo metterli nel primo post, ma mi dava un errore ( anche li )  ;)

Offline giovanni106

  • python unicellularis
  • *
  • Post: 13
  • Punti reputazione: 0
    • Mostra profilo
Re:Esercizio codecombat --- chi mi può dare una mano?
« Risposta #2 il: Maggio 17, 2019, 22:27 »
Non conosco codecombat, però ti sta dicendo che, se non ci sono nemici, enemy è nullo, ma il metodo attack come argomento prende un oggetto "nemico". Quindi aggiungi qualcosa tipo:
if enemy != "null":
    hero.attack(enemy)

Offline lelef77

  • python unicellularis
  • *
  • Post: 5
  • Punti reputazione: 0
    • Mostra profilo
Re:Esercizio codecombat --- chi mi può dare una mano?
« Risposta #3 il: Maggio 18, 2019, 09:28 »
Ciao Giovanni,
ti ringrazio tantissimo per avermi rispoto :) ... ma purtroppo non va lo stesso... praticamente da quel che ho notato, il mio personaggio esegue solo una parte del codice, cioè colpisce solo un nemico con l'attacco cleave ma seccessivamente resta immobile  a farsi bastonare mano a mano che arrivano altri nemici...
con il codice da te suggerito mi restituiva sempre lo stesso errore... allora l'ho cambiato in
if enemy != "null":
        hero.say("aspetto di prenderle :)")


Cambiandolo in questo modo non ricevo più l'errore, ma il personaggio resta comunque immobile anche se arrivano altri nemici, è come se non ripetesse il ciclo while.
Forse sbaglio a scrivere qualcosa?
while True:
    enemy = hero.findNearestEnemy()
    if hero.isReady("cleave"):
        hero.cleave(enemy)
    if enemy != "null":
        hero.say("message")
    else:
        hero.attack(enemy)

Offline lelef77

  • python unicellularis
  • *
  • Post: 5
  • Punti reputazione: 0
    • Mostra profilo
Re:Esercizio codecombat --- chi mi può dare una mano?
« Risposta #4 il: Maggio 18, 2019, 10:22 »
Ok, ho risolto così
while True:
    enemy = hero.findNearestEnemy()
    if enemy:
        hero.attack(enemy)

praticamente ho tolto l'attaco "cleave" e messo l'attaco normale.... ma continuo a non capire, in teoria l'attacco normale cel'avevo già sull'"else".. quindi avrebbe dovuto funzionare ugualmente... o no?

Vorrei capire la situazione, perchè prossima volta che entro saràpiù difficile e mi farebbe comodo poter utilizzare tutto quello che ho a disposizione.

Offline GlennHK

  • python sapiens sapiens
  • ******
  • Post: 1.642
  • Punti reputazione: 1
    • Mostra profilo
    • La Tana di GlennHK
Re:Esercizio codecombat --- chi mi può dare una mano?
« Risposta #5 il: Maggio 18, 2019, 15:58 »

Perché non è

if hero != "null":

bensì

if hero:

Inoltre il tuo ciclo non controlla le condizioni nell'ordine corretto. Devi usare enemy solo dentro l'if, altrimenti non risolvi il problema:

while True:
    enemy = hero.findNearestEnemy()
    if enemy:
        if hero.isReady("cleave"):
            hero.cleave(enemy)
        else:
            hero.attack(enemy)
    else:
        hero.say("message")

Offline lelef77

  • python unicellularis
  • *
  • Post: 5
  • Punti reputazione: 0
    • Mostra profilo
Re:Esercizio codecombat --- chi mi può dare una mano?
« Risposta #6 il: Maggio 18, 2019, 21:16 »
Grazie Glen, in effetti così funziona meglio :) ...
Ora però c'è un altro problema, ogni volta che sopravvivo per 40 sec, posso ripetere il gioco che naturalmente diventa più difficile... quindi ci sta che posto altro  :)