日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python跑酷游戏源码_Phaser.js实现简单的跑酷游戏附源码下载

發布時間:2023/12/15 python 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python跑酷游戏源码_Phaser.js实现简单的跑酷游戏附源码下载 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

采用的物理引擎是Phaser.js

在這里對此引擎不做過多介紹(因為我也是小白,嘿嘿)

效果展示:

源碼(詳細源碼圖片資源可點擊文章下方或屏幕右上方的github鏈接進行clone)

1.創建游戲舞臺

var config = {

type: Phaser.AUTO,

width: 800,

height: 400,

physics: {

default: 'arcade',

arcade: {

gravity: {

y: 300

},

debug: false

}

},

scene: {

preload: preload,

create: create,

update: update

}

};

var game = new Phaser.Game(config); // 創建游戲

2.載入資源

function preload() {

this.load.image('sky', 'assets/sky.png');

this.load.image('ground', 'assets/platform.png');

5 6 this.load.spritesheet('dude', 'assets/dude.png', {

frameWidth: 32,

frameHeight: 48

});

}

3.將資源創建到舞臺上

var distanceText; // 路程文本

var distance = 0; // 路程

var platforms; // 地面

var player; // 玩家

var enemy; // 敵人

var enemys; // 敵人們

var enemyTimer; // 敵人計時器

var distanceTimer; // 路程計時器

function create() {

// 添加畫布背景

this.add.image(400, 200, 'sky');

// 添加分數文本

distanceText = this.add.text(16, 16, 'Distance: 0m', {

fontSize: '20px',

fill: '#000'

});

// 添加地面

platforms = this.physics.add.staticGroup();

platforms.create(400, 400, 'ground').setScale(3).refreshBody();

// 添加玩家(精靈)

player = this.physics.add.sprite(100, 300, 'dude');

player.setBounce(0); // 設置阻力

player.setCollideWorldBounds(true); // 禁止玩家走出世界

// 敵人

enemys = this.physics.add.group();

enemys.children.iterate(function (child) {

child.setCollideWorldBounds(false);

});

// 動態創建敵人

enemyTimer = setInterval(function () {

enemy = enemys.create(1000, 300, 'dude');

enemy.setTint(getColor());

enemy.anims.play('left', true);

enemy.setVelocityX(Phaser.Math.Between(-300, -100));

}, Phaser.Math.Between(4000, 8000))

distanceTimer = setInterval(function () {

distance += 1;

distanceText.setText('Distance: ' + distance + 'm');

}, 1000)

this.physics.add.collider(player, platforms); //玩家在地面上

this.physics.add.collider(enemys, platforms); //敵人在地面上

this.physics.add.collider(player, enemys, hitBomb, null, this);

}

4.在創建場景過程中寫鍵盤監聽事件

var cursors; // 按鍵

// 事件

this.anims.create({

key: 'left',

frames: this.anims.generateFrameNumbers('dude', {

start: 0,

end: 3

}),

frameRate: 10,

repeat: -1

});

this.anims.create({

key: 'right',

frames: this.anims.generateFrameNumbers('dude', {

start: 5,

end: 8

}),

frameRate: 10,

repeat: -1

});

this.anims.create({

key: 'turn',

frames: [{

key: 'dude',

frame: 4

}],

frameRate: 20

});

cursors = this.input.keyboard.createCursorKeys();

5.寫碰撞函數(當玩家與敵人碰撞的結果)

var gameOver = false; // 游戲結束

function hitBomb(player, enemys) {

this.physics.pause();

clearInterval(enemyTimer);

clearInterval(distanceTimer);

player.setTint(0xff0000);

gameOver = true;

alert('游戲結束,您跑了' + distance + 'm');

}

6.在update函數中寫時間的執行(須注意的是此函數每一幀都在執行,1幀≠1秒)

function update() {

if (cursors.up.isDown && player.body.touching.down) {

player.setVelocityY(-220);

} else {

player.anims.play('right', true);

}

if (gameOver) {

player.setVelocityX(0);

player.anims.play('turn');

return;

}

}

這里我給敵人上了顏色的,隨機16進制顏色

function getColor() {

var color = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"].sort(function(){

return Math.random() - 0.5

}).join("").substr(0,6);

return "0x" + color;

}

整個源碼奉上(建議去github上自己clone):

var config = {

type: Phaser.AUTO,

width: 800,

height: 400,

physics: {

default: 'arcade',

arcade: {

gravity: {

y: 300

},

debug: false

}

},

scene: {

preload: preload,

create: create,

update: update

}

};

var game = new Phaser.Game(config); // 創建游戲

var distanceText; // 路程文本

var distance = 0; // 路程

var platforms; // 地面

var player; // 玩家

var enemy; // 敵人

var enemys; // 敵人們

var gameOver = false; // 游戲結束

var enemyTimer; // 敵人計時器

var distanceTimer; // 路程計時器

var cursors; // 按鍵

// 載入資源

function preload() {

this.load.image('sky', 'assets/sky.png');

this.load.image('ground', 'assets/platform.png');

39 40 this.load.spritesheet('dude', 'assets/dude.png', {

frameWidth: 32,

frameHeight: 48

});

}

// 將資源展示到畫布創建資源

function create() {

// 添加畫布背景

this.add.image(400, 200, 'sky');

// 添加分數文本

distanceText = this.add.text(16, 16, 'Distance: 0m', {

fontSize: '20px',

fill: '#000'

});

// 添加地面

platforms = this.physics.add.staticGroup();

platforms.create(400, 400, 'ground').setScale(3).refreshBody();

// 添加玩家(精靈)

player = this.physics.add.sprite(100, 300, 'dude');

player.setBounce(0); // 設置阻力

player.setCollideWorldBounds(true); // 禁止玩家走出世界

// 敵人

enemys = this.physics.add.group();

enemys.children.iterate(function (child) {

child.setCollideWorldBounds(false);

});

// 事件

this.anims.create({

key: 'left',

frames: this.anims.generateFrameNumbers('dude', {

start: 0,

end: 3

}),

frameRate: 10,

repeat: -1

});

this.anims.create({

key: 'right',

frames: this.anims.generateFrameNumbers('dude', {

start: 5,

end: 8

}),

frameRate: 10,

repeat: -1

});

this.anims.create({

key: 'turn',

frames: [{

key: 'dude',

frame: 4

}],

frameRate: 20

});

cursors = this.input.keyboard.createCursorKeys();

// 動態創建敵人

enemyTimer = setInterval(function () {

enemy = enemys.create(1000, 300, 'dude');

enemy.setTint(getColor());

enemy.anims.play('left', true);

enemy.setVelocityX(Phaser.Math.Between(-300, -100));

}, Phaser.Math.Between(4000, 8000))

distanceTimer = setInterval(function () {

distance += 1;

distanceText.setText('Distance: ' + distance + 'm');

}, 1000)

this.physics.add.collider(player, platforms); //玩家在地面上

this.physics.add.collider(enemys, platforms);

this.physics.add.collider(player, enemys, hitBomb, null, this);

}

// 一直執行

function update() {

if (cursors.up.isDown && player.body.touching.down) {

player.setVelocityY(-220);

} else {

player.anims.play('right', true);

}

if (gameOver) {

player.setVelocityX(0);

player.anims.play('turn');

return;

}

}

function hitBomb(player, enemys) {

this.physics.pause();

clearInterval(enemyTimer);

clearInterval(distanceTimer);

player.setTint(0xff0000);

gameOver = true;

alert('游戲結束,您跑了' + distance + 'm');

}

function getColor() {

var color = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"].sort(function(){

return Math.random() - 0.5

}).join("").substr(0,6);

return "0x" + color;

}

總結

以上所述是小編給大家介紹的Phaser.js實現簡單的跑酷游戲附源碼下載,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!

總結

以上是生活随笔為你收集整理的python跑酷游戏源码_Phaser.js实现简单的跑酷游戏附源码下载的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。