Aggiornamento: 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![]()

Rispondi quotando