• 掉瓶子小游戏


    欢迎来到程序小院

    掉瓶子

    玩法:旋转的瓶子,根据瓶子方向,点击鼠标左键瓶子掉落,从桌面中间掉下即得1分,卡在桌边瓶子碎了游戏结束,快去掉瓶子吧^^。
    

    开始游戏icon-default.png?t=N7T8https://www.ormcc.com/play/gameStart/203

    html

      <div id="phaser-example" style="text-align: center;"></div>
    

    css

    1. body{
    2.   margin0%;
    3.   padding0%;
    4. }

    js

    1. gameover = false;
    2. //console.log(this.sound);
    3. var bg = this.add.image(00'bg').setOrigin(0);
    4. bg.width = game.config.width;
    5. bg.height = game.config.height;
    6. //bottle = this.add.sprite(00'bottle').setOrigin(0.5).setScale(0.2).setInteractive();
    7. bottle = this.physics.add.sprite(00'bottle').setOrigin(0.5).setScale(0.2);
    8. bottle.body.offset.set(bottle.width*2,0);//设置身体偏移量 锚点缩小2倍 偏移需放大2
    9. bottle.isRotation = true;
    10. //对象在游戏内居中
    11. // bottle.x = (game.config.width - bottle.width*bottle.scaleX)/2;
    12. // bottle.y = (game.config.height - bottle.height*bottle.scaleY)/2;
    13. bottle.x = (game.config.width - bottle.width*bottle.scaleX)/1.85;
    14. bottle.y = (game.config.height - bottle.height*bottle.scaleY)/4;
    15. bottle.on('pointerdown'function (pointer) {                     //对象的事件监听器
    16.         //this.setTint(0xff0000);                                         //设置当前元素的填充色
    17.     });
    18. this.input.on('pointerdown'function (pointer) {
    19.         bottle.isRotation = false;
    20.         bottle.body.gravity.y = 500;
    21.         //game.sound.play('swing');
    22.     });
    23. tables = this.physics.add.staticGroup();
    24. tablel = tables.create(320 - 560/1.67480 - 700/4'tablel').setScale(0.5);
    25. //tablel.body.y = 340;
    26. tabler = tables.create(560/1.49480 - 700/4'tabler').setScale(0.5);
    27. scoreText = this.add.text(0,0,score);
    28. scoreText.setColor('#0');
    29. scoreText.setFontSize(36);
    30. Phaser.Display.Align.In.TopRight(scoreText, bg);
    31. if(gameover){
    32.     return;
    33. }
    34. if(bottle.isRotation == true){
    35.     bottle.angle += angle;
    36. }
    37. if (checkOverlap(bottle, tablel)) {
    38.     collider = true;
    39. else {
    40.     collider = false;
    41. }
    42. if (checkOverlap(bottle, tabler)) {
    43.     collider = true;
    44. else {
    45.     collider = false;
    46. }
    47. if(collider & bottle.y > 340)
    48. {
    49.     bottle.destroy();
    50.     //this.sound.play('sklo2');
    51.     //此处播放粒子动画
    52.     particles = this.add.particles('Debris');
    53.     particles.createEmitter({
    54.         setFrame: 'sprite-sheet0.png',
    55.         //frame: [ 'sprite-sheet0.png''sprite2-sheet0.png''sprite3-sheet0.png' ],
    56.         x: game.config.width/2,//横坐标
    57.         y: 340,//纵坐标
    58.         speed: 50,//速度
    59.         gravityY: 200,//重力
    60.         frequency: 1000,//频率
    61.         lifespan: 2000,//周期
    62.         alpha: { start1end0 },
    63.         scale: { min: 0.05, max: 0.4 },
    64.         rotate: { start0end360, ease: 'Back.easeOut' },
    65.         angle: { min: 0, max: 360 },
    66.         speed: { min: 10, max: 100 },
    67.         quantity: 12,//一次性的数量
    68.         on:!false//开关
    69.     });
    70.     this.time.addEvent({ delay: 1000, callback: destroyParticles, callbackScope: this });
    71.     //gameover
    72.     gameover = true;
    73. }
    74. if(bottle.y > game.config.height){
    75.     //此处关卡通行进入下一级
    76.     //this.sound.play('gift');
    77.     score++;
    78.     if(Math.floor(Math.random()*(9+1)) >= 5){
    79.         angle = score;
    80.     } else {
    81.         angle = -score;
    82.     }
    83.     gameover = false;
    84.     stateStart('demo',this);
    85. }
    86. // if (isNull(score)){
    87. //     scoreText.setText('score');
    88. // }
    89. scoreText.setText(score);
    90. console.log(score);
    91. var bg = this.add.image(00'bg').setOrigin(0);
    92. bg.width = game.config.width;
    93. bg.height = game.config.height;
    94. var bar = this.add.image(0,0,'bar').setOrigin(0).setScale(1,0.6);
    95. bar.setX(0);
    96. bar.setY(bar.height*bar.scaleY*1.25);
    97. bar.width = game.config.width;
    98. bar.height *= bar.scaleY;
    99. scoreText = this.add.text(0,0,'Score:' + score);
    100. var bestText = this.add.text(0,0,'Best:' + bestScore);
    101. Phaser.Display.Align.In.Center(scoreText, bar);
    102. scoreText.y -= scoreText.height;
    103. Phaser.Display.Align.In.Center(bestText, bar);
    104. bestText.y += bestText.height;
    105. var overText = this.add.text(0,0,'Game Over');
    106. overText.setColor('#0');
    107. overText.setFontSize(36);
    108. Phaser.Display.Align.In.TopCenter(overText, bg);
    109. overText.y = bar.y - overText.height * 1.25;
    110. var btnRePlay = this.add.image(0,0,'btn').setScale(0.5).setInteractive();
    111. Phaser.Display.Align.In.BottomCenter(btnRePlay, bg);
    112. btnRePlay.y -= btnRePlay.height*btnRePlay.scaleY;
    113. var that = this;
    114. btnRePlay.on('pointerdown'function (pointer) {
    115.     //game.sound.play('click');
    116.     score = 0;
    117.     angle = 1;
    118.     //alert(this.scene.scene.key);
    119.     //that.scene.setVisible(false);
    120.     stateStart('demo',that);
    121.     btnRePlay.destroy();
    122. });

    源码

    需要源码请关注添加好友哦^ ^

    转载:欢迎来到本站,转载请注明文章出处https://ormcc.com/

  • 相关阅读:
    子类到底能不能继承父类的私有属性?
    [机缘参悟-83]:如何自我前提应对可能的经-济-危-机?
    python经典百题之删除指定字母
    2024年智能手表行业线上市场销售数据分析
    Docker常用命令
    图像语义分割概述
    QCheckBox样式表
    【Python datetime模块精讲】:时间旅行者的日志,精准操控日期与时间
    HMS Core音频编辑服务音源分离与空间音频渲染,助力快速进入3D音频的世界
    Linux RPM 构建
  • 原文地址:https://blog.csdn.net/qq_16659821/article/details/134403004