Jump Game

JumpGame 1

Given an array of non-negative integers, you are initially positioned at the first index of the array.
Each element in the array represents your maximum jump length at that position.
Determine if you are able to reach the last index.

For example:
A = [2,3,1,1,4], return true.
A = [3,2,1,0,4], return false.

这题比较简单,给你一个数组,里面的每个元素表示你可以向后跳跃的步数,我们需要知道能不能移动到最后一个元素。
采用贪心法即可,每次跳一步,看剩余步数和能补充的步数即num[i]哪个大,剩余步数就等于哪个,如果当可跳跃次数小于0 还没到达 ,那么失败!

类似于加油问题,能补充进来比当前大,那就补充! 贪心


        if (nums.length == 0)
            return true;

        int step = nums[0];

        for (int i = 1; i <nums.length; i ++)
        {
            step --;
            //每走一步,步数减1
            if (step < 0)
                return false;

            //可补充数大于剩余步数
            if (nums[i] > step)
                step = nums[i];
        }

        return true;
    }

Jump Game2

jump2 需要我们求出最少的步数

    /*
    这题不同于上题,只要求我们得到最少的跳跃次数,所以铁定能走到终点的,这里仍然使用贪心法。
    维护两个变量,当前能达到的最远点p以及下一次能达到的最远点q,在p的范围内迭代计算q,然后更新步数,并将最大的q设置为p,重复这个过程知道p达到终点
     */
    public static int jump(int[] nums) {


        int cur=0,step=0,next=0;

        int i = 0;
        while (i < nums.length)
        {
            if (next >= nums.length -1)
                break;

            while (i <= cur)
            {
                next = Math.max(next,nums[i]+i);
                i++;
            }

            step++;
            cur = next;
        }

        return step;

    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是C#跳跃游戏的源代码: using System.Collections; using System.Collections.Generic; using UnityEngine; public class PlayerController : MonoBehaviour { public float jumpForce = 10f; public float moveSpeed = 5f; public Transform groundCheck; public LayerMask groundLayer; public GameObject gameOverPanel; private Rigidbody2D rb; private Animator anim; private bool isJumping = false; private bool isGrounded = false; void Start() { rb = GetComponent<Rigidbody2D>(); anim = GetComponent<Animator>(); } void Update() { if (Input.GetKeyDown(KeyCode.Space) && isGrounded) { isJumping = true; rb.velocity = Vector2.up * jumpForce; } anim.SetBool("isJumping", isJumping); anim.SetFloat("yVelocity", rb.velocity.y); float horizontalInput = Input.GetAxisRaw("Horizontal"); rb.velocity = new Vector2(horizontalInput * moveSpeed, rb.velocity.y); if (rb.velocity.x > 0) { transform.localScale = new Vector3(1, 1, 1); } else if (rb.velocity.x < 0) { transform.localScale = new Vector3(-1, 1, 1); } isGrounded = Physics2D.OverlapCircle(groundCheck.position, 0.1f, groundLayer); if (!isGrounded) { gameOverPanel.SetActive(true); Time.timeScale = 0f; } } private void OnTriggerEnter2D(Collider2D collision) { if (collision.CompareTag("Coin")) { Destroy(collision.gameObject); } } } 在此代码中,我们定义了玩家控制器的变量和属性。我们还定义了开始和更新函数,以便在游戏中实现跳跃和移动。我们还在代码中添加了碰撞检测和游戏结束的逻辑。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值