使用js制作接小球的游戏

效果图

当点击屏幕任意位置的时候游戏开始,键盘左右键操作屏幕下方的挡板,当屏幕下方的挡板没能够接住球的时候游戏挑战失败。

接小球游戏.gif

实现思路

  • 首先我们的小球肯定是向上走的。那么它的上边距将是越来越小的;

  • 设左边距就是x坐标上的值,那么小球的球心x坐标是随机生成的,所以需要用到随机数。

  • 得知小球的x和y轴的坐标之后,就可以求出由y轴的运动带动x轴运动的运动轨迹公式1688641212946.png

    根据这个公式可以让球向上倾斜运动

  • 镜像反弹实现思路:

    • 1688641373589.png
    • 当小球上下碰撞时,他的x值正好是相反的;当小球左右碰撞时他的y轴刚好相反。
  • 挡板实现思路:

    • 使用键盘事件控制挡板左右移动
    • 当圆心位置坐标到达最下面是判断圆心的x值是否在圆心r - 挡板的左间距挡板左间距+挡板宽度这个区间内,如果在则继续反弹,否则游戏结束

具体实现代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>接球游戏</title>
    <style>
        #screen{
            width: 1500px;
            height: 600px;
            border: 1px dashed red;
            position: relative;
        }
        #ball{
            width: 100px;
            height: 100px;
            background-color: rgb(245, 245, 147);
            border-radius: 50%;
            position: absolute;
            top: 250px ;
            left: 700px;
        }
        #footer{
            width: 1500px;
            height: 100px;
            position: relative;
            border: 1px solid red;
        }
        #board{
            width: 300px;
            height:50px;
            background-color: red;
            text-align: center;
            line-height: 50px;
            position:absolute;
            cursor: pointer;
        }
    </style>
</head>
<body>
    <div id="screen" onclick="start()">
        <div id="ball"></div>
    </div>
    <div id="footer">
        <div id="board" onclick="start()">
            开始游戏
        </div>
    </div>
    <script>
         //获取foot
         let board = document.getElementById("board");
        //挡板的位置
        let board_x = 0,border_y = 0;
        document.onkeydown =  function (event) { 
            //左键为39 右键37
            let keyCode = event.keyCode;
            console.log(keyCode);
            switch(keyCode){
                case 37:
                    if(board_x <= 0){
                        break;
                    }
                    //向左边移动
                    board_x-=30;
                    
                    board.style.left = board_x+'px';
                    break;
                case 39:
                if(board_x >= 1200){
                        break;
                    }
                    //向右边移动
                    board_x+=30;
                    board.style.left = board_x+'px';
                    break;
                default:;
            }

        }





        //1、生成0都1980的随机整数
        let r = Math.floor(Math.random()*1500);
        //小球撞顶随机点的坐标(r,50)
        //球心的坐标(x,y)
        let x=800,y=300;
        //计算x和y之间运动距离之间的倍数关系
        let x_y = (x-r)/(y-50);
        //表示单位时间内沿着y轴向上运动一个单位
        let dy = -1;
        //x轴在一个单位时间内运动的单位
        let dx = x_y*dy;
        //获取元素
        let ball = document.getElementById("ball");

        //绑定事件
        function start(){
            // alert("游戏开始")
            setInterval(() => {
                //上下碰撞
                if(y<=50||y>=550){
                    dy=-dy;
                    //如果没接住
                    if(y>=550){
                        console.log('快接住我');
                        if(x<=board_x || x>=board_x + 300){
                        alert("游戏结束!");
                        window.location.reload();
                        }
                    }
                }

                //左右碰撞
                if(x<=50 || x>=1450){
                    dx=-dx;
                }
                //计算单位时间内坐标的位置
                y+=dy;
                x+=dx;
                //控制小球
                ball.style.left = x-50+'px';
                ball.style.top = y-50 +'px';
            }, 5);
        }
    </script>
</body>
</html>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,我可以为您提供一个简单的小球游戏的实现。 首先,您需要安装 Python 3.x 版本和 Pygame 模块。然后,您可以按照以下步骤进行操作: 1. 导入 Pygame 模块和 sys 模块: ```python import pygame import sys ``` 2. 初始化 Pygame 和游戏窗口: ```python pygame.init() screen = pygame.display.set_mode((640, 480)) pygame.display.set_caption('小球游戏') ``` 3. 定义小球的类和其运动方法: ```python class Ball: def __init__(self, x, y, radius, color, speed): self.x = x self.y = y self.radius = radius self.color = color self.speed = speed def move(self): self.x += self.speed[0] self.y += self.speed[1] ``` 4. 定义游戏主循环: ```python ball = Ball(320, 240, 10, (255, 0, 0), (5, 5)) while True: for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit() screen.fill((255, 255, 255)) pygame.draw.circle(screen, ball.color, (ball.x, ball.y), ball.radius) ball.move() if ball.x - ball.radius < 0 or ball.x + ball.radius > 640: ball.speed = (-ball.speed[0], ball.speed[1]) if ball.y - ball.radius < 0 or ball.y + ball.radius > 480: ball.speed = (ball.speed[0], -ball.speed[1]) pygame.display.update() ``` 在游戏主循环中,我们首先处理 Pygame 的事件,如果用户关闭了游戏窗口,则退出游戏。然后我们清空游戏窗口,绘制小球,并让小球运动。如果小球撞到了窗口的边缘,则改变小球的速度方向。最后,我们调用 Pygame 的 `display.update()` 方法更新游戏窗口。 这样,一个简单的小球游戏就完成了。您可以根据自己的需求进行修改和完善。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值