Disponibile nuova versione!
- Corretti alcuni bug
- Performance migliorate
- Aggiunti nuovi esempi
Ecco l'esempio di un semplice gioco creato con ATOMIC:
Link immagine
codice:INIZIA /* IL PROGETTO: - Il giocatore (cerchio blu) si muove con le frecce della tastiera - Oltre al giocatore c'è un nemico (cerchio rosso) che insegue automaticamente il giocatore - Quando il nemico tocca il giocatore il gioco finisce - Durante il gioco appare una moneta (cerchio oro) in una posizione casuale - L'obbiettivo del giocatore è raccogliere più monete possibili senza farsi prendere dal nemico - Ogni volta che il giocatore raccoglie una moneta il nemico diventa sempre più grosso - Se il giocatore oltrepassa i limiti della finestra viene teletrasportato nel lato opposto */ // ------------------------- Variaibili del giocatore ------------------------- x_del_giocatore = larghezza finestra / 2 // centro orizzontale y_del_giocatore = altezza finestra / 2 // centro verticale // ------------------------- Variabili del nemico ------------------------- x_del_nemico = ottieni uno a caso di questi valori --> (VALORE 1: 50) (VALORE 2: larghezza finestra - 50 ) y_del_nemico = ottieni uno a caso di questi valori --> (VALORE 1: 50) (VALORE 2: altezza finestra - 50 ) //Il nemico parte da uno a caso dei quattro angoli raggio_nemico = 20 obbiettivo_x_del_nemico = x_del_giocatore obbiettivo_y_del_nemico = y_del_giocatore velocità_nemico = 4 margine_obbiettivo = 4 //il margine evita la "vibrazione" del nemico quando raggiunge una coordinata (prova a scrivere 0 per vedere cosa succede!) //questo margine deve essere maggiore o uguale alla velocità del nemico tempo_aggiornamento_obbiettivo_nemico=0 distanza_nemico = ottieni distanza tra due punti --> (X 1: x_del_giocatore) (Y 1: y_del_giocatore) (X 2: x_del_nemico) (Y 2: y_del_nemico) // ------------------------- Variabili della moneta ------------------------- x_della_moneta = -99 y_della_moneta = -99 // -99 � un punto in cui non si vede, per non farla comparire fin dall'inizio tempo_moneta = 0 moneta_presa = vero /*Considera la moneta già presa: - per non farla comparire all'inizio - per far partire il contatore del tempo (tempo_moneta), in modo che compaia in seguito*/ // ------------------------- Variabili del sistema ------------------------- punteggio = 0 game_over = falso //La griglia non serve imposta griglia --> (VISIBILE: falso) CICLO CONTINUO //Se il giocatore non ha ancora perso se game_over = falso { //Muovi il giocatore con le frecce della tastiera se tasto freccia su è premuto = vero allora diminuisci y_del_giocatore di 10 . se tasto freccia giu è premuto = vero allora aumenta y_del_giocatore di 10 . se tasto freccia destra è premuto = vero allora aumenta x_del_giocatore di 10 . se tasto freccia sinistra è premuto = vero allora diminuisci x_del_giocatore di 10 . //10 = velocità in pixel per 1/30 secondi //L'obbiettivo del nemico è la posizione del giocatore, minore è il tempo di aggiornamento più il gioco è difficile aumenta tempo_aggiornamento_obbiettivo_nemico di 1 se tempo_aggiornamento_obbiettivo_nemico è maggiore di 15 //più il tempo è alto e più il nemico è stupido, ricorda: 30 = 1 secondo { obbiettivo_x_del_nemico = x_del_giocatore obbiettivo_y_del_nemico = y_del_giocatore tempo_aggiornamento_obbiettivo_nemico = 0 //riporta a zero per iniziare una nuova attesa } //Controlla se il giocatore ha preso la moneta distanza_moneta = ottieni distanza tra due punti --> (X 1: x_del_giocatore) (Y 1: y_del_giocatore) (X 2: x_della_moneta) (Y 2: y_della_moneta) se distanza_moneta<40 //40 perché è la somma del raggio del giocatore (20) e del raggio della moneta (20) { //sposta la moneta in una zona irraggiungibile e invisibile al giocatore (come se scomparisse) x_della_moneta = -99 y_della_moneta = -99 se moneta_presa = falso //se la moneta non è ancora considerata presa { aumenta punteggio di 1 aumenta raggio_nemico di 5 suona --> (SUONO: suono beep2) moneta_presa = vero //ora considera la moneta presa (in questo modo il codice viene eseguito una sola volta) } } // Fai ricomparire la moneta dopo un po' di tempo che è stata presa se moneta_presa = vero { aumenta tempo_moneta di 1 se tempo_moneta > 60 //ricorda: 30 = 1 secondo { moneta_presa = 0 //ripristina moneta_presa (la moneta si può di nuovo prendere) //Fai comparire la moneta in un punto casuale della finestra x_della_moneta = ottieni un valore intero compreso tra questi --> (VALORE 1: 0) (VALORE 2: larghezza finestra) y_della_moneta = ottieni un valore intero compreso tra questi --> (VALORE 1: 0) (VALORE 2: altezza finestra) tempo_moneta = 0 //ripristina tempo di attesa per la ricomparsa della moneta } } //Controlla collisone con il nemico (Game over!) distanza_nemico = ottieni distanza tra due punti --> (X 1: x_del_giocatore) (Y 1: y_del_giocatore) (X 2: x_del_nemico) (Y 2: y_del_nemico) se distanza_nemico < 20 + raggio_nemico { suona --> (SUONO: suono errore) game_over = vero } //Programma il movimento del nemico in base al suo obbiettivo se x_del_nemico è minore di obbiettivo_x_del_nemico + margine_obbiettivo allora aumenta x_del_nemico di velocità_nemico . se x_del_nemico è maggiore di obbiettivo_x_del_nemico - margine_obbiettivo allora diminuisci x_del_nemico di velocità_nemico . se y_del_nemico è minore di obbiettivo_y_del_nemico + margine_obbiettivo allora aumenta y_del_nemico di velocità_nemico . se y_del_nemico è maggiore di obbiettivo_y_del_nemico - margine_obbiettivo allora diminuisci y_del_nemico di velocità_nemico . //Teletrasporta il giocatore dall'altro lato se supera i limiti della finestra se x_del_giocatore è maggiore di larghezza finestra allora x_del_giocatore = 0 . se x_del_giocatore è minore di 0 allora x_del_giocatore = larghezza finestra . se y_del_giocatore è maggiore di altezza finestra allora y_del_giocatore = 0 . se y_del_giocatore è minore di 0 allora y_del_giocatore = altezza finestra . //Disegna tutta la grafica del gioco disegna cerchio --> (RAGGIO: 20) (X: x_del_giocatore) (Y: y_del_giocatore) (COLORE: blu) disegna cerchio --> (X: x_della_moneta) (Y: y_della_moneta) (COLORE: oro) (RAGGIO: 20) disegna cerchio --> (X: x_del_nemico) (Y: y_del_nemico) (COLORE: rosso) (RAGGIO: raggio_nemico) testo = ottieni testo combinato --> (TESTO 1: "PUNTEGGIO: ") (TESTO 2: punteggio) disegna testo --> (X: 10) (Y: 10) (TESTO: testo) } // <-- fine del blocco "se game_over = falso" //Programma la schermata di game over se game_over = vero { colore sfondo = nero testo = ottieni testo combinato --> (TESTO 1: "GAME OVER! Hai raggiunto il punteggio di ") (TESTO 2: punteggio) (TESTO 3: " Premi il tasto INVIO per iniziare una nuova partita!" disegna testo --> (X: larghezza finestra/2) (Y: 320) (TESTO: testo) (COLORE: bianco) (ALLINEAMENTO ORIZZONTALE: al centro) se tasto invio è stato premuto = vero allora riavvia il programma . }
Spero possa interessare a qualcuno![]()

