Solo PHP. Niente trucchi e niente inganno (ne Javascript ne Web). Ci imbarcheremo nell’odissea che porta un programmatore a pensare di poter scrivere videogiochi con PHP e SDL. Disegnare sullo schermo, gestire gli input, fare il play di audio e gestire il mixer.
PHPDay GrUSP edition 2022
26. GAME LOOP
/* Init window/renderer/load images */
do {
// a lot of stuff
} while (!$quit);
/* Clean the kitchen */
1
2
3
4
5
6
7
27. GAME LOOP
/* Init window/renderer/load images */
$event = new SDL_Event();
do {
SDL_PollEvent($event);
$inputStatus = checkInput();
$quit = updateGame($inputStatus, $event);
render();
} while (!$quit);
/* Clean the kitchen */
1
2
3
4
5
6
7
8
9
10
11
28. UPDATE
class Player {
private int SPEED = 1; // pixels per loop
private int $x;
public function update() {
$this->x += self::SPEED;
}
public function render($renderer) {
$renderer->drawItPlease($playerTexture, $this->x);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
29. UPDATE
class Player {
private int SPEED = 30; // pixels per second
private int $x;
public function update(float $deltaTime) {
$this->x += self::SPEED * $deltaTime;
}
public function render($renderer) {
$renderer->drawItPlease($playerTexture, $this->x);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
private int $x;
class Player {
1
private int SPEED = 30; // pixels per second
2
3
4
public function update(float $deltaTime) {
5
$this->x += self::SPEED * $deltaTime;
6
}
7
8
public function render($renderer) {
9
$renderer->drawItPlease($playerTexture, $this->x);
10
}
11
}
12
30. UPDATE
private float $x;
class Player {
1
private int SPEED = 30; // pixels per second
2
3
4
public function update(float $deltaTime) {
5
$this->x += self::SPEED * $deltaTime;
6
}
7
8
public function render($renderer) {
9
$renderer->drawItPlease($playerTexture, (int)$this->x);
10
}
11
}
12