Anteprima
Vedrai una selezione di 4 pagine su 13
Teoria Informatica applicata Pag. 1 Teoria Informatica applicata Pag. 2
Anteprima di 4 pagg. su 13.
Scarica il documento per vederlo tutto.
Teoria Informatica applicata Pag. 6
Anteprima di 4 pagg. su 13.
Scarica il documento per vederlo tutto.
Teoria Informatica applicata Pag. 11
1 su 13
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

Creare tanti target:

preloadgame.load.image('targets', 'sprites/carrot.png');

create(dopo piattaforme)targets = game.add.physicsGroup();

targets.create(Math.random()*800, Math.random()*600, 'target') -> crea a caso un oggetto se lo incollo inupdate ne crea tantissime (scritto prima di tutto)

updategame.physics.arcade.overlap(player, targets, collect)

function collect (p, t) {

t.kill()

forza = 1

size = size * 1.5

player.scale.setTo( size )}

meno carote:

Per creare un po'

updateif (Math.random()<0.05)targets.create(Math.random()*800, Math.random()*600, "targets")

Dimezzare velocità player:

createvar forza = 1;

uploadif (cursors.left.isDown){ player.body.velocity.x = -250 * forza;}

else if (cursors.right.isDown){ player.body.velocity.x = 250 * forza;}

Prendo target e forza max:

updatefunction collect (p,t) {

t.kill()

forza = 1

Updateforza = forza*0.999

LEZIONE 3arma:

Crearepreloadgame.load.image('bullet',

'sprites/carrot.png');
createvar weapon;
(dopo il giocatore)
weapon = game.add.weapon(10, 'bullet');
(10 = n. proiettili, forma proiettili)
weapon.trackSprite(player);
-> associo arma al giocatore
weapon.fireAngle = 0
weapon.bulletSpeed = 100;
(in fondo sotto ai tasti)
fireButton = game.input.keyboard.addKey(Phaser.Keyboard.C);
update
if (fireButton.isDown) {
    weapon.fire()
}
https://phaser.io/examples/v2/category/weapon
Sparare a oggetto, se lo tocco mi uccide:
update
game.physics.arcade.overlap(enemy, weapon.bullets, hit);
-> weapon.bullets: proiettili pistola
function hit (e, b) {
    e.vite = e.vite - 1;
    if (e.vite === 0) {
        e.kill()
    }
    b.kill()
    -> esplode oggetto e esplode anche il bullet
}
nemico con tre vite:
Creare
var enemy;
enemy = game.add.sprite(600, 200, 'player');
enemy.tint = 0xFF0000
-> lo rende rosso
enemy.vite = 3
Update
function hit (e, b) {
    e.vite = e.vite - 1;
    if (e.vite === 0)
        -> muore al terzo colpo
        e.kill()
}
Oppure(colpisco e diventa più)

piccolo)if(e.vite === 2) {e.scale.setTo(0.5)}b.kill()}

LEZIONE 4 vite:Omino con

preload
game.load.image('enemy', 'sprites/clown.png');
game.load.image('bullet', 'sprites/carrot.png');
game.load.image('life', 'sprites/melon.png');

create

var enemy;
var weapon;
var life1, life2, life3;
var label;
game.world.setBounds(0, 0, 1600, 1200); -> imposta confine del mondo
life1 = game.add.sprite(10, 10, 'life');
life2 = game.add.sprite(40, 10, 'life');
life3 = game.add.sprite(70, 10, 'life');
label = game.add.text(10, 50, "Lifes: 3");
player = game.add.sprite(100, 200, 'player');
player.vite = 3;
enemy = game.add.sprite(400, 300, 'enemy');
weapon = game.add.weapon(100, 'bullet');
weapon.trackSprite(enemy);
game.camera.follow(player);
update
weapon.fireAngle = Math.random() * 360
weapon.fire()
game.physics.arcade.overlap(player, weapon.bullets, hit);
function hit (p, b) {
    p.vite = p.vite
<p>– 1label.setText("Lifes: " + p.vite)</p>
<p>if(p.vite < 3) life3.alpha = 0.2</p>
<p>if(p.vite < 2) life2.alpha = 0.2</p>
<p>if(p.vite < 1) {life1.alpha = 0.2 p.kill() game.add.text(350, 100, "GAME OVER! :(") game.paused = true}</p>
<p>b.kill()</p>

<h2>LEZIONE 5</h2>
<p>createConsole.log(“sto iniziando a creare il gioco …”) -> sto stampando quella informazione in quel preciso momento, quando leggo la scritta nella console significa che sta iniziando a caricare il gioco -> phaser è passato a quella linea (alla fine del create prima dell’ultima graffa)</p>
<p>console.log("... gioco creato!")</p>

<p>uploadif (jumpButton.isDown && (player.body.onFloor() || player.body.touching.down)){ player.body.velocity.y = -400;console.log("Salto!") -> quando salto} tempo:Per aggiungere</p>
<p>updateconsole.log(game.time.time) -> ogni 60 sec nella</p>
Il testo formattato con i tag HTML è il seguente:

console va avanti di un numero
Create

var label;
label = game.add.text(10, 10, "Time: ...", {fill: "white"})

-> fill white per scriverlo in bianco
Update

label.setText("Time: " + game.time.time)

-> orologio che va avanti, sono millesecondi, guardare il 4ultimo
inizia da 0
Tempo che e va avanti, n. sec passati da inizio del gioco:
Create

var startTime;

(in fondo a create)

startTime = game.time.time

Update

label.setText("Time: " + (game.time.time - starTime))

-> in millesecondi

label.setText("Time: " + (game.time.time - starTime)/1000)

-> timer in secondi
countdown:
Inserire

var countDown = 10;

Update

label.setText("Time: " + (countdown - Math.floor((game.time.time - startTime)/1000)))

-> tempo va indietro. ma va anche a -1
per non fare andare al negativo il tempo sostituisco la riga sopra con:

time = (countDown - Math.floor((game.time.time - startTime)/1000))
label.setText("Time: " + time)

score.setText("Score:

Il codice formattato con i tag HTML è il seguente:

" + Math.floor((game.time.time - startTime)/1000))if(time < 1) {player.kill()game.paused = true;}

salta e tempo + 3:

Player

Sotto a jumbButton e sotto a player.body.velocity in update:

countDown = countdown + 3 -> 3 sec in più ogni volta che salta

oggetto:

Creare

preload game.load.image('diamond', 'sprites/diamond.png')

Create

var diamonds(dopo piattaforme) diamonds = game.add.physicsGroup(); diamonds.create(300, 300, ‘diamond’) diamonds.create(Math.random()*800, Math.random()*600, ‘diamond’) -> un diamante in un punto a caso

prendo diamante aumenta tempo:

Quando

update game.physics.arcade.overlap(player, diamonds, collect) function collect(p, d) {d.kill()countDown = countDown + 3;}

oggetto ogni tot secondi:

Creare

create(sotto gruppo diamanti) game.time.events.loop(2000, spawnDiamond) -> ogni due secondi richiama questa funzione

(sotto a blocco create)

function spawnDiamond() {diamonds.create(Math.random()*800, Math.random()*600,
<script>
    function timer() {
        setInterval(function() {
            score.setText("Score: " + Math.floor((game.time.time - startTime)/1000));
        }, 5000);
    }

    var score = game.add.text(10, 50, "Score: ...", {fill: "white"});

    function spawnDiamond() {
        var d = diamonds.create(Math.random()*800, Math.random()*600, 'diamond');
        d.body.velocity.x = Math.random()*200-100;
        d.body.velocity.y = Math.random()*200-100;
    }

    game.load.spritesheet('coin', 'sprites/coin.png', 32, 32, 6);
</script>

sono le immagini (6)

createplayer = game.add.sprite(100, 200, 'coin');

player.animations.add('rotate', [0, 1, 2, 3, 4, 5]); -> animazione

player.animations.add('anti-rotate', [5, 4, 3, 2, 1, 0]); -> al contrario

player.animations.add('shake', [0, 1, 0, 5]); -> trema

player.animations.add('triple-rotate', [0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5]);

player.animations.play('shake', 10, true); -> 10 velocità e se continua (true) o fa una volta e si ferma (false)

salta giro

Ogni volta che si la moneta fa un su se stessa:

updateplayer.body.velocity.y = -400;

player.animations.play('triple-rotate', 10, false);

ruotare di continuo

fare la moneta:

creategame.time.events.loop(5000, r);

function r(){player.animations.play('rotate', 20, false)}

LEZIONE 7

Lezione 15/11

Come far muovere il nemico

Creo l'enemy (sempre allo stesso modo). Faccio una funzione che dice che se c'è overlap tra il

giocatore e il nemico viene richiamata la funzione bad ( game.physics.arcade.overlap(player, enemy, bad);) che è la seguente: ```javascript function bad(p, e) { p.kill(); } ``` In questo modo quando il player tocca il nemico muore. Poi in aggiungo la seguente stringa per far muovere il nemico: `enemy.body.velocity.x=100` Come faccio a far andare il nemico avanti e indietro? Gli dico che quando arriva a una certa coordinata cambia direzione. Per fare ciò aggiungo sotto la stringa precedente la seguente stringa: ```javascript if(enemy.body.x < 400) enemy.body.velocity.x = 200; if(enemy.body.x > 750) enemy.body.velocity.x = -200; ``` Che dice che se il nemico è in una coordinata minore di 400 va a destra, se invece è maggiore di 750 va a sinistra. Come fare un oggetto segua il player update? Creiamo un nuovo oggetto che chiamiamo phantom (che sarà l'oggetto che seguirà il player). Poi scriviamo: ```javascript phantom.body.velocity.x = player.x - phantom.x; ``` `player.x` sarebbe la coordinata x del player,Se voglio farlo seguire più velocemente metto 2* prima di player.x - phantom.x - phantom.x Per far sì invece che invece di seguire il player scappi da esso basterà mettere il - prima del 2* Come calcolare la distanza tra due oggetti: dx = player.x - phantom.x e dy = player.y - phantom.y. A questo punto posso scrivere che se la distanza è minore di cento l'oggetto segue il player, se è maggiore si stacca, per far ciò uso la seguente stringa: if(dx*dx+dy*dy < 100*100){ phantom.body.velocity.x = 2*(player.x - phantom.x); phantom.body.velocity.y = 2*(player.y - phantom.y); } Aggiungiamo un'immagine che chiamiamo checkpoint e la posizioniamo nella mappa. Poi aggiungo: player.cpx = 100; player.cpy = 200; (cp sta per checkpoint) Per posizionare l'immagine, poi vado a modificare la funzione bad, in modo che se tocco il nemico non muoio ma ritorno al punto di checkpoint quindi scrivo: function bad(p, e) { p.x = p.cpx; p.y = p.cpy; } Facendo cosìriproduce il video correttamente.
Dettagli
Publisher
A.A. 2021-2022
13 pagine
1 download
SSD Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher heialee di informazioni apprese con la frequenza delle lezioni di Laboratorio di Computergrafica e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Politecnico di Milano o del prof Rana Vincenzo.