首页 > 编程语言 >c++_ 贪吃蛇_蛇尾坐标记录问题

c++_ 贪吃蛇_蛇尾坐标记录问题

时间:2023-07-10 22:35:30浏览次数:38  
标签:记录 int 蛇尾 c++ 贪吃蛇 坐标 指针

c++_ 贪吃蛇_蛇尾坐标记录问题

思路:利用双指针,把蛇尾的状态数组向后移动1位。
    int prevX = tailX[0];
    int prevY = tailY[0];//之前的蛇头坐标给prevX,prevY
    int prev2X, prev2Y;
    tailX[0] = x;
    tailY[0] = y;//更新蛇头坐标
    for (int i = 1;i<nTail;i++)
    {
        prev2X = tailX[i];
        prev2Y = tailY[i];//prev2指向数组的下一个位置(向后移动)
        tailX[i] = prevX;
        tailY[i] = prevY;//prev的坐标赋给prev2指向的数组中的位置
        prevX = prev2X;
        prevY = prev2Y;//prev向后移动
    }
解释:nTail记录蛇的总长度, tailX[]和tailY[]分别记录蛇尾的位置坐标
    关键问题就是如何记录设为坐标?
    总的思路:利用双指针,指针2记录位置2的值,指针1把位置1的值放到位置2,指针1、2后移...
    简介思路:指针2取y值,指针1取x值-放x值到y,指针2把y值给x-取下一个值y...循环
    定义prevX,prevY记录当前蛇头的位置
    定义prev2X,prev2Y指向数组下个位置

标签:记录,int,蛇尾,c++,贪吃蛇,坐标,指针
From: https://www.cnblogs.com/espgod/p/17542532.html

相关文章

  • c++ day 6
    昨天小偷了个懒今天好好搞回来今天还要复习一个概念知识,我这里只是记录我学习过程中的点子。程序性能分析我们先来看一个小故事故事由chatgpt生成 时间复杂度和空间复杂度是分析算法效率和资源消耗的重要指标。让我们逐一了解这两个概念。时间复杂度是衡量算法执行所需......
  • 1002 A+B for Polynomials C++
    Thistime,youaresupposedtofind A+B where A and B aretwopolynomials.InputSpecification:Eachinputfilecontainsonetestcase.Eachcaseoccupies2lines,andeachlinecontainstheinformationofapolynomial:K N1​ aN1​​ N2​ aN2​​ ......
  • 如何使用C++11 STD::THREAD设置堆栈大小?
    本教程将介绍如何使用C++11std::thread设置线程的堆栈大小。C++11std::thread是一种轻量级的多线程实现,它的灵活性使得它成为一个流行的选择。但是,在某些情况下,您可能需要设置线程的堆栈大小来满足您的需求。在开始本教程之前,我们假设您已经熟悉了C++11std::thread的基础知识......
  • 遇到难题了,在线等大佬求解\C++
    intmain(){ characcounts[]={0}; charpassword[]={0}; inti=0; printf("请输入账号:>"); scanf("%s",accounts); (strcmp(accounts,"1234")==0); for(i=1;i<=3;i++) { printf("请输入密码:>"); ......
  • C++程序设计综合实验任选题目[2023-07-10]
    C++程序设计综合实验任选题目[2023-07-10]程序设计综合实验任选题目简单题目题目1模拟ATM机存取款管理系统设计1、问题描述模拟银行的自动取款及使用过程中的界面和用户交互过程。实现查询银行卡余额、取款、修改密码、退出系统等功能。2、功能要求(1)卡号、密码输入最多......
  • python3使用pip安装wordcloud报错error: Microsoft Visual C++ 14.0 or greater is re
    背景:使用的是Anaconda集成环境,python版本是:3.10,安装wordcloud包,使用的命令是:pipinstallwordcloud,出现报错:error:MicrosoftVisualC++14.0orgreaterisrequired.Getitwith"MicrosoftC++BuildTools":https://visualstudio.microsoft.com/visual-cpp-build-tools/......
  • 如何用C++11实现观察者模式
    观察者模式是一种设计模式,定义了对象之间的一对多关系。当一个对象状态发生改变时,它的依赖者都会收到通知并自动更新。在C++11中,可以通过以下方式实现观察者模式:首先,我们需要创建一个观察者接口,其中包含一个更新方法。这个接口可以被多个观察者类实现,从而实现多态。#include<iostr......
  • C++类模板实现工厂模式(优化if else/switch case)
    引自:https://blog.csdn.net/weixin_43795921/article/details/127224633template<typenameIdentifierType,classAbstractProduct,classProductCreator=AbstractProduct*(*)(),classMapContainer=std::map<IdentifierType,ProductCreato......
  • C++ 数据抽象
     数据抽象是指,只向外界提供关键信息,并隐藏其后台的实现细节,即只表现必要的信息而不呈现细节。数据抽象是一种依赖于接口和实现分离的编程(设计)技术。让我们举一个现实生活中的真实例子,比如一台电视机,您可以打开和关闭、切换频道、调整音量、添加外部组件(如喇叭、录像机、DVD播......
  • C++题解——格子游戏
    题目链接:一本通TFLSOJ思路:使用并查集给点连接,如果在连接过程中遇到已连接的点二次连接,就输出代码:#include<bits/stdc++.h>usingnamespacestd;structnode{ intx,y;};nodef[205][205];intn,m;nodefind(nodek){ if(f[k.x][k.y].x==k.x&&f[k.x][k.y].y==k.y)retur......