Cari Lettori,
Cursor è un editor di codice avanzato basato su VS Code, arricchito con funzionalità di intelligenza artificiale per migliorare la produttività degli sviluppatori.
Ho chiesto a ChatGPT di darmi qualche idea su come utilizzarlo ed ho ottenuto questa risposta sintetica:
Cosa puoi fare con Cursor?
✅ Completamento intelligente: suggerisce e completa automaticamente il codice mentre scrivi.
✅ Debug e assistenza AI: aiuta a trovare e correggere errori nel codice in modo interattivo.
✅ Refactoring e ottimizzazione: migliora il codice suggerendo modi più efficienti per scriverlo.
✅ Generazione di codice: può creare funzioni, script e componenti partendo da descrizioni testuali.
✅ Integrazione con Git: supporta la gestione del versionamento direttamente nell’editor.
✅ Supporto multi-linguaggio: funziona con vari linguaggi di programmazione.Cursor è particolarmente utile per accelerare lo sviluppo, ridurre gli errori e migliorare la qualità del codice grazie alla sua integrazione con l’AI. 🚀
ChatGPT4o
Ho deciso quindi di prendere il codice di un giochino in Python che avevo usato in un corso per ragazzi qualche anno fa e vedere come riusciva a migliorarlo e modificarlo. Dopo averlo sperimentato io, ho fatto fare lo stesso esercizio ai ragazzi con questo o altro codice a loro scelta e, vi spoilero il finale, sono stati tutti molto soddisfatti dell’esperimento.
Questa l’interfaccia: ci si arriva dopo aver installato qualche plugin per Python, ma diciamo che sono operazioni di routine, molto facili e che non necessitano di particolare spiegazione.
Nella parte centrale si incolla il codice da provare, debuggare, migliorare, o anche arricchire.
Nella parte inferiore si trova il terminale in cui far girare il codice.
Sulla destra si apre la chat testuale in cui richiedere modifiche, suggerimenti, ampliamenti… Un dialogo che aiuta molto sia il programmatore ancora inesperto, che può avere nuove idee, sperimentare funzioni che non conosceva, capire meglio la logica del programma, sia il programmatore esperto che a maggior ragione può avviare un dialogo e una revisione più competente delle proposte fornite dall’IA.
Ad esempio, ho chiesto “Vorrei continuare il gioco, aggiungendo altre parti”.
Risposta:
def Intro():
print (”’Dopo un lungo cammino, si erge di fronte a te la montagna dei draghi. Tra una folta boscaglia, vedi il sentiero che si biforca e scorgi in lontananza, in fondo a ciascun sentiero, una caverna. La leggenda racconta che in una di queste caverne si trova un drago pericolosissimo, mentre nell’altra c’è un drago buono, che regala monete d’oro dal suo tesoro a tutti i visitatori…”’)
print()
nome = input(‘Come ti chiami, coraggioso avventuriero? ‘)
print(f’\nBenvenuto {nome}! Preparati per la tua avventura!’)
time.sleep(2)
return nome
def scegliCav():
caverna = ”
while caverna != ‘1’ and caverna != ‘2’:
print (‘\nIn quale caverna vuoi entrare? 1 o 2?’)
print (‘(Scrivi 1 per la caverna di sinistra, 2 per quella di destra)’)
caverna = input()
return caverna
def verifica(CavScelta, nome):
punteggio = 0
print (‘Ti avvicini con cautela alla caverna…’)
time.sleep(2)
print (‘Si sente odore di muffa, è un anfratto buio e tenebroso…’)
time.sleep(2)
print (‘Un enorme drago con un balzo ti sbarra il passo…’)
print()
time.sleep(2)
amico = random.randint(1,2)
if CavScelta == str(amico):
punteggio += 100
print (f”’…E con la coda spinge verso di te un grande sacco
di monete d’oro! Complimenti {nome}, hai guadagnato {punteggio} punti!”’)
else:
print (f”’…Spalanca le fauci e
ti incenerisce tra mille lingue di fuoco! Mi dispiace {nome}, hai perso!”’)
return punteggio
# Variabili globali per il punteggio totale
punteggio_totale = 0
ancora = ‘s’
print(“=== IL GIOCO DELLE CAVERNE DEI DRAGHI ===\n”)
nome_giocatore = Intro()
while ancora == ‘s’:
CavNumero = scegliCav()
punteggio_round = verifica(CavNumero, nome_giocatore)
punteggio_totale += punteggio_round
print(f’\nPunteggio totale: {punteggio_totale}’)
print(‘\nVuoi giocare ancora? (s o n)?’)
ancora = input().lower()
print(f’\nGrazie per aver giocato, {nome_giocatore}!’)
print(f’Il tuo punteggio finale è: {punteggio_totale}’)
Verificato e funziona. Allora ho chiesto: Vorrei aggiungere una caverna in più ogni volta che si ripete il gioco.
Di fronte a questa domanda più difficile mi ha fornito un codice che non girava. Allora gli ho chiesto di verificare dall’inizio tutto il codice.
Lo ha riscritto così:
import random
import time
def Intro():
print(”’Dopo un lungo cammino, si erge di fronte a te la montagna dei draghi.
Tra una folta boscaglia, vedi il sentiero che si biforca e scorgi in lontananza,
in fondo a ciascun sentiero, una caverna. La leggenda racconta che in una di
queste caverne si trova un drago pericolosissimo, mentre nell’altra c’è un
drago buono, che regala monete d’oro dal suo tesoro a tutti i visitatori…”’)
print()
nome = input(‘Come ti chiami, coraggioso avventuriero? ‘)
print(f’\nBenvenuto {nome}! Preparati per la tua avventura!’)
time.sleep(2)
return nome
def scegliCav(num_caverne):
while True:
print(f’\nIn quale caverna vuoi entrare? (da 1 a {num_caverne})’)
print(f'(Ci sono {num_caverne} caverne tra cui scegliere)’)
caverna = input()
if caverna.isdigit():
if 1 <= int(caverna) <= num_caverne:
return caverna
print(f”Per favore, inserisci un numero tra 1 e {num_caverne}”)
def verifica(CavScelta, nome, num_caverne):
punteggio = 0
print(‘Ti avvicini con cautela alla caverna…’)
time.sleep(2)
print(‘Si sente odore di muffa, è un anfratto buio e tenebroso…’)
time.sleep(2)
print(‘Un enorme drago con un balzo ti sbarra il passo…’)
print()
time.sleep(2)
amico = random.randint(1, num_caverne)
if CavScelta == str(amico):
punteggio += 100 * num_caverne
print(f”’…E con la coda spinge verso di te un grande sacco
di monete d’oro! Complimenti {nome}, hai guadagnato {punteggio} punti!”’)
else:
print(f”’…Spalanca le fauci e
ti incenerisce tra mille lingue di fuoco! Mi dispiace {nome}, hai perso!”’)
return punteggio
def main():
punteggio_totale = 0
ancora = ‘s’
num_caverne = 2
print(“=== IL GIOCO DELLE CAVERNE DEI DRAGHI ===\n”)
nome_giocatore = Intro()
while ancora == ‘s’:
print(f”\nLivello attuale: {num_caverne-1}”)
CavNumero = scegliCav(num_caverne)
punteggio_round = verifica(CavNumero, nome_giocatore, num_caverne)
punteggio_totale += punteggio_round
print(f’\nPunteggio totale: {punteggio_totale}’)
print(‘\nVuoi giocare ancora? (s o n)?’)
ancora = input().lower()
if ancora == ‘s’:
num_caverne += 1
print(f’\nGrazie per aver giocato, {nome_giocatore}!’)
print(f’Il tuo punteggio finale è: {punteggio_totale}’)
if __name__ == “__main__”:
main()
Ho dovuto rilanciare tutto, ma alla fine con questo codice ha funzionato e ha fatto esattamente quello che volevo! Tempo di lavoro, pochissimo: attività didattica utile e alquanto provocatoria per i ragazzi, soprattutto se accompagnata dalla richiesta di spiegare quanto svolto.
Magari prossimamente vi farò vedere qualche altro lavoretto dei ragazzi, che si sono divertiti anche con Turtle e con un po’ di matematica…
A presto,
Federica