Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2009
    Messaggi
    41

    ATOMIC nuovo linguaggio di programmazione in italiano

    Ciao,

    ho creato ATOMIC, un linguaggio di programmazione in italiano a scopo didattico.



    la versione attuale è il lavoro di circa quattro mesi.
    Sto cercando prima di tutto dei feedback sul lavoro svolto e delle persone interessate a collaborare
    (Anche soltanto per la creazione di esempi e suggerimenti).
    Il progetto non ha fini di lucro.

    Link download:
    http://www.bergame.eu/Atomic.rar (5,43 MB)
    Documentazione: http://www.bergame.eu/ATOMIC_MANUALE_v1.0.02.pdf

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2009
    Messaggi
    41
    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
    Immagini allegate Immagini allegate

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Visto che hai creato un'altra discussione (quando avevi già questa aperta) e che l'altra è stata effettivamente movimentata, chiudo questa e si prosegua in quella nuova.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.