C++贪吃蛇

贪吃蛇(一)--用C++编写一个简单的贪吃蛇 #include<iostream> #include<windows.h> #include<conio.h> #include<time.h> using namespace std; #define random(a,b) (rand()%(b-a+1)+a) const int N=1e3+100;//蛇的最大长度 int X[N],Y[N];//记录蛇的每个节点的坐标 int Snake_length;//蛇的当前长度 int X1=1,Y1=1; 阅读详情
#include <stdio.h>
#include <conio.h>
#include <windows.h>
#include <stdlib.h>
#include <time.h>

#define WIDTH 20
#define HEIGHT 20

int gameOver;
int x, y, fruitX, fruitY, score;
int tailX[100], tailY[100];
int nTail;
enum eDirection { STOP = 0, LEFT, RIGHT, UP, DOWN };
enum eDirection dir;

void Setup() {
    gameOver = 0;
    dir = STOP;
    x = WIDTH / 2;
    y = HEIGHT / 2;
    fruitX = rand() % WIDTH;
    fruitY = rand() % HEIGHT;
    score = 0;
}

void Draw() {
    system("cls"); // 清屏
    for (int i = 0; i < WIDTH + 2; i++)
        printf("#");
    printf("\n");

    for (int i = 0; i < HEIGHT; i++) {
        for (int j = 0; j < WIDTH; j++) {
            if (j == 0)
                printf("#");
            if (i == y && j == x)
                printf("O");
            else if (i == fruitY && j == fruitX)
                printf("F");
            else {
                int printTail = 0;
                for (int k = 0; k < nTail; k++) {
                    if (tailX[k] == j && tailY[k] == i) {
                        printf("o");
                        printTail = 1;
                    }
                }
                if (!printTail)
                    printf(" ");
            }
            if (j == WIDTH - 1)
                printf("#");
        }
        printf("\n");
    }

    for (int i = 0; i < WIDTH + 2; i++)
        printf("#");
    printf("\n");
    printf("Score: %d\n", score);
}

void Input() {
    if (_kbhit()) {
        switch (_getch()) {
        case 'a':
            dir = LEFT;
            break;
        case 'd':
            dir = RIGHT;
            break;
        case 'w':
            dir = UP;
            break;
        case 's':
            dir = DOWN;
            break;
        case 'x':
            gameOver = 1;
            break;
        }
    }
}

void Logic() {
    int prevX = tailX[0];
    int prevY = tailY[0];
    int prev2X, prev2Y;
    tailX[0] = x;
    tailY[0] = y;
    for (int i = 1; i < nTail; i++) {
        prev2X = tailX[i];
        prev2Y = tailY[i];
        tailX[i] = prevX;
        tailY[i] = prevY;
        prevX = prev2X;
        prevY = prev2Y;
    }

    switch (dir) {
    case LEFT:
        x--;
        break;
    case RIGHT:
        x++;
        break;
    case UP:
        y--;
        break;
    case DOWN:
        y++;
        break;
    default:
        break;
    }

    if (x >= WIDTH) x = 0; else if (x < 0) x = WIDTH - 1;
    if (y >= HEIGHT) y = 0; else if (y < 0) y = HEIGHT - 1;

    for (int i = 0; i < nTail; i++)
        if (tailX[i] == x && tailY[i] == y)
            gameOver = 1;

    if (x == fruitX && y == fruitY) {
        score += 10;
        fruitX = rand() % WIDTH;
        fruitY = rand() % HEIGHT;
        nTail++;
    }
}

int main() {
    srand(time(0));
    Setup();
    while (!gameOver) {
        Draw();
        Input();
        Logic();
        Sleep(100); // 控制游戏速度
    }
    return 0;
}

c++贪吃蛇游戏 DEV c++贪吃蛇 DEV DEV-C++ #include <iostream> #include <list> #include <cstdio> #include <string> #include <vector> #include <ctime> #include <algorithm> #include &l... 阅读详情

相关推荐

C++ 双人贪吃蛇

这篇代码基于博主的“C++ 贪吃蛇基本算法”,加入第二只蛇让他移动并不难,但考虑到要让两只蛇的移动互不干扰那还真是破事真多。博主将“C++ 贪吃蛇基本算法”中的while(1)改成了goto,以用来将两条蛇的计数器分开,并加入了变量“move”来判断按键是操纵谁。在这篇代码中,switch()函数可能阅读起来非常困难,因为蛇2输入的按键与地图上的字符不匹配,所以这篇代码看起来并不是很明了。由于太麻烦

shadow19990927的博客 5298

c++实现贪吃蛇

1.绘制地图

qq_17769213的博客 2万+

C++控制台贪吃蛇(简单版,注释详细,易于理解)

本程序由三个文件组成,简单易懂,用于巩固c++知识点和学习API函数有一定的帮助。喜欢收藏、点赞、评论三连哦。 1.Snake_Class.h文件 #pragma once #ifndef SNAKEHEAD #define SNAKEHEAD #include <iostream> #include <conio.h> #include <windows.h&gt...

ganyonjie的博客 716

贪吃蛇.cpp

之前写了一篇c++的博客,感觉阅读量不错嘛(嘿嘿嘿)! 今天我又来写了,希望大家喜欢。 #include<iostream> #include<windows.h> #include<conio.h> #include<cstdio> #include<time.h> using namespace std; struct node { int x,y; }; node s[110],food,tail;//s是蛇的身体的坐标 food是食物坐标

jingyiru2的博客 330

Xilinx Blockset Counter计数器模块使用及参数配置

本文详细介绍了Simulink中Xilinx Blockset库Counter模块的使用以及参数说明。

白码王子小张的博客 1093

SAP LSMW保姆级操作文档

SAP LSMW(Legacy System Migration Workbench)是一个强大的工具,旨在简化旧系统数据向SAP系统的迁移过程。它允许用户通过多种方式导入数据,包括直接输入、批处理输入和BAPI。LSMW支持数据映射和转换,确保数据在迁移过程中保持一致性,减少手动输入的需求,从而提高效率,适用于新系统实施和数据更新项目。在日常运维过程中我们经常会遇到用户要求我们批量改一写数据,通常这些字段的信息有些SAP是提供程序可以批量进行更改的比如主数据的MM17、通用更改数据的MASS。

我小时候很黑的博客 4917

用C++语言实现贪吃蛇游戏

写在前面 用C++语言写游戏再适合不过了,当然不是因为用它写起来简单,(相反那并不简单),但是其性能绝对是其他语言没法比的。所以这里我会用C++实现一个贪吃蛇的游戏。当然我可能有意隐瞒了你,因为我们不仅仅是用C++纯语言来干这件事,那会很别扭,因为我们需要图像渲染、声音、甚至是碰撞检测(我最喜欢的一个版块)!所以仅仅用语言是不够的。 (注:在文章最后我会给出两个版本的贪吃蛇源码及涉及到的一些资源

razorEdge的博客 1万+

DP3(3D Diffusion Policy)算法详解:从点云感知到扩散动作生成

DP3 的全称是:DP3 = 3D Diffusion Policy\boxed{\text{DP3 = 3D Diffusion Policy}}DP3 = 3D Diffusion Policy​对应论文题目是:3D Diffusion Policy: Generalizable Visuomotor Policy Learning via Simple 3D Representations该工作发表于 Robotics: Science and Systems(RSS)2024。DP3 是一种面向机器

u013250861的博客 346

C++简单小项目之贪吃蛇

可以看到大叔的代码其实只定义了两个方向:相对于小蛇前进方向的左右方向,这是不太符合我们的操作习惯的,会带来这个问题:如果小蛇是向下移动的,我们想让小蛇向我们的左边前进,我们会下意识按左方向键,但是实际上这是相对小蛇的左边,因此小蛇实际会往我们 期望的反方向跑......这是我们不希望看到的......当然我这里是对老哥的视频做的贪吃蛇的代码的一些详解,因为我自己看他的视频的时候看的云里雾里的,他并没有将所有细节都讲清楚。通过这行代码,我们创建了一个可以存储游戏屏幕信息的缓冲区。

playoffsp的博客 798

打开UG会安装报错:initialization internal ERROR 的提示框,提示line 1344 of错误的解决方案

打开UG会安装报错:initialization internal ERROR 的提示框,提示line 1344 of错误的解决方案

Q82556499的博客 3520

机械臂的运动学分析-工业机器人

机械臂的运动学是研究机械臂各连杆坐标系之间的运动关系,是对机械臂进行运动控制的基础。本章分析了所设计的六自由度机械臂的运动学。理论上六自由度机械臂的工作空间是一个近似球形区域,能够覆盖机械臂所在的位置,但由于机械臂关节的运动范围受到限制,机械臂末端会存在一些不能到达的工作死区,使得机械臂的工作范围和灵活性受到限制。理论上六自由度机械臂的工作空间是一个近似球形区域,能够覆盖机械臂所在的位置,但由于机械臂关节的运动范围受到限制,机械臂末端会存在一些不能到达的工作死区,使得机械臂的工作范围和灵活性受到限制。

qq_59137727的博客 6647

C++版贪吃蛇游戏

这是以前写的C++版贪吃蛇游戏,也是我学C++时的课程设计题目。通过这个游戏的开发,使我对编程有了更大的兴趣,也对自己逐渐有了信心。     贪吃蛇游戏的设计思路如下:       1)用二维数组来存储显示面板,即有蛇的地方用1表示,没有的地方用0表示,最后据此来绘制图。       2)用时间函数来控制小蛇的移动速度,如每个1秒或500ms等,可以用此来设置等级。       3)贪吃

牟尼的专栏 1万+

论文Agile Autonomy: Learning High-Speed Flight in the Wild开源代码运行记录

​ Agile Autonomy: Learning High-Speed Flight in the Wild Learning High-Speed Flight in the Wild 论文链接:https://www.science.org/doi/10.1126/scirobotics.abg5810 代码:https://github.com/uzh-rpg/agile_autonomy 国内复现:https://github.com/Howardcl/AgileAutonomyPX4

Hanamizukimr的博客 1488

c++贪吃蛇代码

c++贪吃蛇代码 #include <windows.h> #include <stdlib.h> #include <conio.h> #include <time.h> #include <cstring> #include <cstdio> #include <iostream> #define N 22 u...

panjoel的博客 4022

CAPL编程规范与最佳实践

通过本文的学习,读者应该对CAPL编程规范与最佳实践有了初步的了解,并能够编写高质量的CAPL脚本。在实际项目中,CAPL的应用非常广泛,希望读者能够通过不断的学习和实践,掌握更多的CAPL技巧,提高自己的开发能力。

闲人编程的博客 1747

VI4302 1D dToF Sensor助力无人机定高避障:一场前所未有的飞行体验

另外,传感器因测量精度不够,产生的高度信息误差,会导致无人机无法精确定高,影响飞行稳定性和安全降落。芯视界于2022年发布的全新一代基于单光子探测技术的dToF激光雷达传感器芯片-VI4302,采用单电源低功耗系统,实现高性能测距、高稳定性,同时具备极强抗阳光能力以及兼容性等强大优势。无人机可以根据传感器提供的信息,快速调整飞行路径,避开潜在的障碍物,确保平稳的飞行。VI4302 1D dToF Sensor能够以极高的精度测量物体与无人机之间的距离,实现毫米级别的测量精度。⭐ 体型小巧,灵敏度高。

致力于lidar应用开发 621

c++贪吃蛇游戏

c++贪吃蛇游戏 一、源代码 1、头文件 snake.h #ifndef SNAKE_H #define SNAKE_H class Snake { public: Snake(){row=0;col=0;num=0;} Snake(int r,int c,int n){row=r;col=c;num=n;} int returnr(); int returnc(); int returnn(); void setr(int); void setc(int); void s

m0_51591954的博客 328

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

贪吃蛇CPP

作者加入了EasyX库(网址:docs.easyx.cn)

m0_72413130的博客 165

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

c++实现贪吃蛇游戏

本文将介绍以C++编写贪吃蛇游戏的过程,包括游戏规则、设计思路、主要功能的实现以及注意事项。最后,我们给出了完整的C++代码,供读者参考和学习。

aliyonghang的博客 2298

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

[C++]C++实现贪吃蛇

转载自http://blog.youkuaiyun.com/ckcz123/article/details/8204365     /************************贪吃蛇***********************/ /**********************2012-11-20*********************/ #include &lt;iostream&gt; ...

1万+

手把手教你用C++写贪吃蛇

最近女朋友挺无聊的(不是左手也不是右手),决定找个小游戏让她玩玩,想来想去就是贪吃蛇比较经典,但是老版的诺基亚挺难找的,于是决定用C++写一个贪吃蛇来哄哄女朋友,也顺便更新一下博客。 由于代码分多个文件写成,因此不太好在博客中贴出源代码,源代码已上传至GitHub(麻烦各位爸爸们看代码时顺手给个star!),下面说一下思路: 如果想写出贪吃蛇的游戏首先得知道贪吃蛇的玩法,简而言之就是一条蛇在转悠,越转越长,同时要吃东西。这么说各位看官肯定都明白了吧?我相信各位的回答一定是下面这样的: 对于贪吃蛇游戏来说,

WJ_SHI的博客 5617

C++实现贪吃蛇游戏

一,项目简介       距上个项目(C++实现推箱子游戏)一周时间,再次回顾儿时经典游戏--贪吃蛇。        实现了按键控制蛇头移动,按下空格键暂停,采用链表结构实现吃到食物蛇身增长,到达一定限度,蛇头前进速率加快;撞到墙壁或蛇身,游戏结束。 ----如有问题,希望大佬指导纠错。 二,代码区 Game.h : #define _SNAKE_H__ #ifdef _SNAKE

Amumu12138的博客 2784
上一篇: 0.99循环竟然=0!
ljb_c++888
博客等级 码龄3年 215粉丝 42原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值