贪吃蛇炒鸡优化版(原创)
突然想练练大模拟,就写了一个贪吃蛇,个人感觉比其他的版本要好许多……
Luogu剪切板
//本程序属个人劳动成果,如有雷同,纯属巧合(全是手打的,思路也是自己的)
#include<bits/stdc++.h>
#include<windows.h>
#include <conio.h>
#define rep(i,l,r) for(int i=l;i<=r;i++)
#define lep(i,l,r) for(int i=l;i>=r;i--)
using namespace std;
inline void gotoxy(int x,int y){HANDLE handle=GetStdHandle(STD_OUTPUT_HANDLE);COORD pos;pos.X=x;pos.Y=y;SetConsoleCursorPosition(handle,pos);return;
}
int mp[1000][1000],len=3,now_len;
vector<int> x,y;
int way,nowx,nowy;
int xinx,xiny;
int head;
bool now_has;
char opt;
int fx[5]= {0,1,-1,0,0},fy[5]= {0,0,0,-1,1};
void color(int a) {//颜色函数SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),a);
}
bool check_canmove() {//判断是否有路可走rep(i,1,4) {if(mp[nowx+fx[i]][nowy+fy[i]]!=1)return true;}return false;
}
void make_map() { //生成地图memset(mp,0,sizeof(mp));vector<int> tmpx,tmpy;int vlen=x.size()-1;rep(i,head,vlen){tmpx.push_back(x[i]);tmpy.push_back(y[i]);}x.clear(),y.clear();x=tmpx,y=tmpy;mp[xinx][xiny]=2;vlen=x.size()-1;mp[x[0]][y[0]]=8;rep(i,1,vlen-1) {int how;bool l,r,h,u;l=h=r=u=0;if(y[i]<y[i-1])l=1;else if(y[i]>y[i-1])r=1;else if(x[i]>x[i-1])h=1;else u=1;if(y[i]<y[i+1])l=1;else if(y[i]>y[i+1])r=1;else if(x[i]>x[i+1])h=1;else u=1;if(h&&l)how=5;else if(l&&u)how=6;else if(h&&u)how=4;else if(h&&r)how=9;else if(u&&r)how=3;else if(l&&r)how=7;mp[x[i]][y[i]]=how;}mp[x[vlen]][y[vlen]]=1;head=0;
}
//1:Θ
//3:╗
//4:║
//5:╚
//6:╔
//7;═
//9:╝
//8:@
void print_map() {//输出地图gotoxy(0,0);cout<<"by lize yyd 2021.9.2 8:06~9.37\n";cout<<"wsad:上下左右\n";color(648);cout<<"———————————————————————————\n";rep(i,1,15) {color(648);cout<<"—";color(7);rep(j,1,25) {if(mp[i][j]==0)color(51),cout<<"■";color(63);if(mp[i][j]==1)cout<<"Θ";else if(mp[i][j]>2){if(mp[i][j]==3)cout<<"╗ ";else if(mp[i][j]==4)cout<<"║ ";else if(mp[i][j]==5)cout<<"╚ ";else if(mp[i][j]==6)cout<<"╔ ";else if(mp[i][j]==7)cout<<"═ ";else if(mp[i][j]==8)cout<<"·";else cout<<"╝ ";}color(54);if(mp[i][j]==2)cout<<"★";color(7);}color(648);cout<<"—\n";}color(648);cout<<"———————————————————————————\n";color(7);cout<<"现在长度:" <<now_len<<endl<<"最长长度:"<<len<<endl<<"吃掉星星:"<<len-3<<endl;
}
void print_gameover() {//游戏结束system("cls");color(4);printf(" _____ __ __ ______ ______ ________ _____ \n"" / ____| /\\ | \\/ | ____| / __ \\ \\ / / ____| __ \\\n"" | | __ / \\ | \\ / | |__ | | | \\ \\ / /| |__ | |__) |\n"" | | |_ | / /\\ \\ | |\\/| | __| | | | |\\ \\/ / | __| | _ / \n"" | |__| |/ ____ \\| | | | |____ | |__| | \\ / | |____| | \\ \\ \n"" \\_____/_/ \\_\\_| |_|______| \\____/ \\/ |______|_| \\_\\\n");color(7);exit(0);
}
void print_win() {//你赢了system("cls");color(10);printf(" __ ______ _ _ __ _______ _ _\n"" \\ \\ / / __ \\| | | | \\ \\ / /_ _| \\ | |\n"" \\ \\_/ / | | | | | | \\ \\ /\\ / / | | | \\| |\n"" \\ /| | | | | | | \\ \\/ \\/ / | | | . ` |\n"" | | | |__| | |__| | \\ /\\ / _| |_| |\\ |\n"" |_| \\____/ \\____/ \\/ \\/ |_____|_| \\_|\n");color(7);exit(0);
}
int main() {
// system("stty -icanon");way=rand()%4+1;srand(time(NULL));nowx=rand()%10+5,nowy=rand()%10+10;x.push_back(nowx),y.push_back(nowy),now_len=1;while(check_canmove()) {srand(time(NULL));if(!now_has) {do {xinx=rand()%15+1,xiny=rand()%25+1;} while(mp[xinx][xiny]==1||mp[xinx][xiny]>2);mp[xinx][xiny]=2;now_has=true;}if(kbhit()){opt=_getch();}if(opt=='w')way=2;if(opt=='s')way=1;if(opt=='d')way=4;if(opt=='a')way=3;nowx+=fx[way],nowy+=fy[way];if(mp[nowx][nowy]==2)len++,now_has=false;x.push_back(nowx),y.push_back(nowy);if(now_len>=len)head++;else now_len++;if(((nowx!=x[head-1]||nowy!=y[head-1])&&(mp[nowx][nowy]==1||mp[nowx][nowy]>2))||nowx==0||nowy==0||nowx==16||nowy==26)print_gameover();make_map();print_map();Sleep(100);//可以自己调时间,单位msif(len==15*25)print_win();}return 0;
}
贪吃蛇炒鸡优化版(原创)相关推荐
- Java贪吃蛇360旋转,贪吃蛇大作战360版
贪吃蛇大作战360客户端带你享受最轻松.最愉悦的休闲游戏,游戏中比拼的不仅是手速,还有技巧,更加考验你的策略!比赛刚开始时大家都是小蛇,这时候就要通过不断努力来把自己变成巨无霸,这样才能更加轻松的取得 ...
- 贪吃蛇大作战JavaFx版完整源码
贪吃蛇大作战 Java版 项目源码:https://github.com/silence1772/JavaFX-GreedySnake (记得点star啊,收藏一个项目最好的方式是star而不是for ...
- c语言联机游戏,C/C++ 游戏 贪吃蛇双人对战版
贪吃蛇双人对战版--C语言 最近写的,用于交最后一次结构化程序设计课的作业,闲暇之余传到网上,仅供参考,新手上路,请多指教. 话不多说,先附上下载链接.http://download.csdn.net ...
- 贪吃蛇大作战撞墙不死c语言,贪吃蛇大作战无敌版
贪吃蛇大作战无敌版是款好玩的休闲类的游戏,游戏中拥有十分简单的画风,玩法十分的简单,你在游戏中简直是无敌的存在,贪吃蛇大作战无敌版撞到别人身上不会死,还可以随意翻出去,让你从此横行霸道于群蛇之间.玩法 ...
- 用javascript+jquery编写的小游戏-贪吃蛇(双人对战版)
前言 这是我在多年前初学jquery, 并结合javascript, 编写的一个小游戏.那洋洋洒洒几千行的js代码时刻提醒着我"不忘初心!". 效果演示 代码 引入文件 由于用到了 ...
- 12行贪吃蛇html,贪吃蛇大作战无敌版
贪吃蛇大作战无敌版下载是一款贪吃蛇类手游,在贪吃蛇大作战无敌版下载游戏中蛇分两种,蛇越多身体越笨重,但伤害也就越高,小蛇虽然伤害不高,但身体非常灵活,可以非常轻快地躲避大蛇的攻击,还等什么赶快来下载游 ...
- 简易贪吃蛇小游戏java版_用GUI实现java版贪吃蛇小游戏
本文实例为大家分享了java版贪吃蛇小游戏的具体代码,供大家参考,具体内容如下 项目结构 新建一个JFrame窗口,作为程序入口 public class GameStart{ public stat ...
- 贪吃蛇(C语言版)链表实现
贪吃蛇 gitee:贪吃蛇C语言版: Snake 蛇的结构 typedef struct Snake {int x;int y;struct Snake *next; }; 游戏开始欢迎界面 //游戏 ...
- java贪吃蛇设计流程_JAVA版贪食蛇(贪吃蛇)游戏的设计与实现(含录像)
JAVA版贪食蛇(贪吃蛇)游戏的设计与实现(含录像)(任务书,开题报告,外文翻译,毕业论文12000字,程序代码,MySQL数据库,答辩PPT,答辩视频录像) 摘要 "贪食蛇"游戏 ...
最新文章
- vanpopup 高度_解决VantUI popup 弹窗不弹出或无蒙层的问题
- PAT(甲级)2019年秋季考试 7-3 Postfix Expression
- Java不满足的依赖异常_不要依赖代码中的异常
- .html追加的触发js事件,JavaScript
- Python 内置模块之 logging
- 【ACL2020】Relabel the Noise: Joint Extraction of Entities and Relations via Cooperative Multiagents
- 2025年的呼叫中心是什么样的?
- vue面试有哪些插件_vue 前端框架面试问题汇总
- pip安装包时报错:The repository located at pypi.doubanio.com is not a trusted or secure host
- 更新linux gcc版本到gcc 4.4.2
- 数据库中左连接、右连接、内连接与外连接的区别和作用
- 你在被窝里刷手机岁月静好,一个名叫 Flink 的 ​“神秘引擎” 却在远方和时间赛跑...
- 从IP138上获取数据,查询多个IP的归宿地
- 数据库——SQL语言建立供应商表S,零件表P,工程表J,供应表SPJ
- 蓝桥杯——PCF8591
- 两块STM32之间 SPI DMA通信
- 年龄 计算 php,php简单计算年龄的方法(周岁与虚岁)
- 矩阵的基变换及对应基变换下向量的坐标变换
- 深度强化学习系列(8): Prioritized Experience Replay(PER-DQN)原理及实现
- 《疯狂Java讲义》读书笔记3