c++游戏制作指南 模板(权当预告)

简介: c++游戏制作指南 模板(权当预告)

 🍿*★,°*:.☆( ̄▽ ̄)/$:*.°★* 🍿

      🍟欢迎来到静渊隐者的csdn博文,本文是c++游戏制作指南的一部🍟

🍕更多文章请点击下方链接🍕

🍨 c++游戏制作指南🍨


🍜专栏介绍:在这一专栏中,我将循循善诱,带领你,在冷峻的控制台上,种满缤纷,一同走入c++控制台游戏的殿堂。

🥨适宜人群:学习C++语言三个月及以上的爱好者,熟记基础语法(选择、循环两大结构),掌握基础算法(高精度、排序、模拟、贪心、搜索、动规等),知晓基础数据结构(数组、字符串、链表、栈、队列、树、图)。

🌭学习目的:能够自主编写出有趣的c++控制台游戏,并掌握自学的方法。

🥞喜欢的朋友可以关注一下,下次更新不迷路

🥙前言

在一片静谧的森林中,淡金色的阳光透过树叶的缝隙,洒在柔软的青苔上,仿佛把时间的流动都放缓了。在这里,一切都显得那么和谐,那么美好。森林的每一片树叶,每一株草,甚至每一丝风,都充满了生命的气息,这种气息是如此清新,如此宁静,仿佛是大自然的呼吸,使得人们愿意停下脚步,侧耳倾听。

#include <iostream>
using namespace std;
#define N 100010
#define INF 1e9
#define ls(x) tr[x].s[0]
#define rs(x) tr[x].s[1]
int n, m;
struct node{
  int s[2]; //左右儿子
  int p; //父亲
  int v; //节点权值
  int cnt; //权值出现次数
  int siz; //子树大小
  void init(int p1,int v1){
    p=p1, v=v1;
    cnt=siz=1;
  }
}tr[N];
int root; //根节点编号
int idx; //节点个数
void pushup(int x){
  tr[x].siz=tr[ls(x)].siz+tr[rs(x)].siz+tr[x].cnt;
}
void rotate(int x){
  int y=tr[x].p, z=tr[y].p;
  int k = tr[y].s[1]==x;
  tr[z].s[tr[z].s[1]==y] =x;
  tr[x].p = z;  
  tr[y].s[k] = tr[x].s[k^1];
  tr[tr[x].s[k^1]].p = y;
  tr[x].s[k^1] = y;
  tr[y].p = x;
  pushup(y), pushup(x);
}
void splay(int x, int k){
  while(tr[x].p!=k){
    int y=tr[x].p, z=tr[y].p;
    if(z!=k)   // 折转底,直转中
      (ls(y)==x)^(ls(z)==y)
        ? rotate(x) : rotate(y);
    rotate(x);
  }
  if(k==0) root = x;
}
void insert(int v){ //插入
  int x=root, p=0;
  while(x && tr[x].v!=v)
    p=x, x=tr[x].s[v>tr[x].v];
  if(x) tr[x].cnt++;
  else{
    x=++idx;
    tr[p].s[v>tr[p].v]=x;
    tr[x].init(p,v);
  }
  splay(x, 0);
}
void find(int v){ //找到v并转到根
  int x=root;
  while(tr[x].s[v>tr[x].v]&&v!=tr[x].v) 
    x=tr[x].s[v>tr[x].v]; 
  splay(x, 0);
}
int getpre(int v){ //前驱
  find(v);
  int x=root;
  if(tr[x].v<v) return x;
  x=ls(x);
  while(rs(x))x=rs(x);
  return x;
}
int getnxt(int v){ //后继
  find(v);
  int x=root;
  if(tr[x].v>v) return x;
  x=rs(x);
  while(ls(x))x=ls(x);
  return x;
}
void del(int v){ //删除
  int pre=getpre(v);
  int suc=getnxt(v);
  splay(pre,0), splay(suc,pre);
  int del=tr[suc].s[0];
  if(tr[del].cnt>1)
   tr[del].cnt--, splay(del,0);
  else
   tr[suc].s[0]=0,splay(suc,0);
}
int getrank(int v){ //排名
  find(v);
  return tr[tr[root].s[0]].siz;
}
int getval(int k){ //数值
  int x=root;
  while(1){
    int y=ls(x);
    if(tr[y].siz+tr[x].cnt<k)
      k -= tr[y].siz+tr[x].cnt,
      x = rs(x);
    else if(tr[y].siz>=k) x=y;
    else break;           
  }
  splay(x, 0);
  return tr[x].v;
}
int main(){
  insert(-INF);insert(INF); //哨兵
  scanf("%d", &n);
  while(n--){
    int op,x;
    scanf("%d%d", &op, &x);
    if(op==1) insert(x);
    if(op==2) del(x);
    if(op==3) printf("%d\n",getrank(x));
    if(op==4) printf("%d\n",getval(x+1));
    if(op==5) printf("%d\n",tr[getpre(x)].v);
    if(op==6) printf("%d\n",tr[getnxt(x)].v);
  }
  return 0;
}

image.gif

🥪一、XXX

在这片神秘的森林中,有一条清澈的小溪穿过,溪水淙淙,如歌如诗,它从山脚下流过,石头上溅起的水花,像是在讲述着每一个美丽的故事。小溪的两旁,野花繁茂,五彩斑斓,它们在微风中轻轻摇曳,花香四溢,与溪水的歌声交织在一起,构成了一首动人的乐章。

🍰二、XXX

向远处望去,森林的尽头是一座静默的山峰,它矗立在那儿,默默地守护着这片美丽的土地。山峰之上的云雾缭绕,如同仙气缭绕,给人一种宁静而神秘的感觉。山脚下,一片湖泊安静地卧着,湖水如镜,倒映着山峰的雄伟和天空的蔚蓝,一切都显得那么和谐,那么宁静。

🌮三、XXX

在这片大自然的画卷中,人们仿佛能找到内心的宁静和身心的放松。在这里,我们可以忘记城市的喧嚣和繁忙,感受到大自然的美丽和宁静。这是一片没有杂质,没有纷扰,只有自然和和谐的土地。在这样的环境中,我们仿佛能找到自我,找到那份来自内心的平静和宁静。

🍔四、XXX

在森林的深处,还有一片神秘的花园,那里盛开着各种奇特的花朵。花朵们竞相开放,色彩斑斓,形态各异,散发出馥郁的芳香,令人陶醉。花园的中心是一棵古老的树,它的枝叶繁茂,遮天蔽日,给人一种威严而又神秘的感觉。

在这片神秘的花园中,有许多小动物们穿梭其间,它们时而欢快地奔跑,时而悠闲地漫步,它们的存在给这片森林增添了更多的生机与活力。

太阳渐渐落下,天空被染上了一片金黄色,美丽的晚霞把整个森林映照得如梦如幻。此时,森林里的每一处都散发着温暖的光芒,仿佛是大自然的画卷,美得令人窒息。

夜幕降临,星星在天空中闪烁,一轮明亮的月亮高悬天际,照亮了整个森林。夜晚的森林变得更加神秘而美丽,一切都显得那么静谧,那么祥和。

这片美丽的森林,是一个充满生机和和谐的地方,它让人们忘却烦恼,感受到大自然的美丽和力量。在这里,我们可以感受到生命的脉动,可以听到大地的的心跳,可以闻到空气中弥漫的幸福和喜悦。

这是一个值得我们珍惜和保护的地方,是一个能让我们心灵得到净化和慰藉的净土。让我们用心去感受这片美丽的森林,去感受大自然的美丽和神秘,去寻找那份来自内心的平静和宁静。

🍣五、结语

在森林的更深处,有一条蜿蜒的小路,它穿越密密的树林,通向了未知的远方。小路两旁长满了各种花草,它们在微风中轻轻摇曳,发出淡淡的芳香。沿着这条小路向前走,仿佛进入了一个神秘的世界,每一个转角都有可能遇见未知的惊喜。

在小路的尽头,是一片静谧的湖面。湖面宛如一面镜子,倒映着周围的树木和天空,形成了一幅美丽的画卷。湖水清澈见底,鱼儿在水中自由自在地游弋,偶尔跃出水面,溅起一串串水花。湖边长满了柳树,它们在微风中轻轻拂动着,仿佛在向游客们讲述着这片森林的故事。

湖的另一侧是一座小山,山上长满了各种各样的树木和花草。登上山顶,可以俯瞰整个森林,远处的景色如诗如画,令人陶醉。在山顶上还有一个古老的寺庙宇,它静静地矗立在那里,散发着神秘的气息。进入庙宇,可以看到许多古老的佛像和神秘的符咒,感受到一种神秘而庄严的氛围。

回到森林中,夜幕已经降临。星空如同撒满了钻石的黑色幕布,闪烁着耀眼的光芒。月亮高悬天际,洒下柔和的月光,照亮了整个森林。此时,森林里的每一处都变得神秘而美丽,仿佛是一个仙境。在这片神秘的森林中,人们仿佛可以感受到自然的神秘力量,可以听到大地的的心跳,可以闻到空气中弥漫的幸福和喜悦。

这片美丽的森林是大自然的杰作,是自然的恩赐。它让人们忘却烦恼,感受到大自然的美丽和力量。在这里,我们可以感受到生命的脉动,可以听到大地的的心跳,可以闻到空气中弥漫的幸福和喜悦。这是一个值得我们珍惜和保护的地方,是一个能让我们心灵得到净化和慰藉的净土。

我们应该珍惜这片森林,保护它的自然环境,不让任何形式的破坏和污染破坏它的美丽和宁静。我们要用行动去爱护它,去照顾它,去保护它,让它的美丽和神秘得以延续。

在这片神秘的森林中,我们不仅可以感受到大自然的的美和神秘,还可以从中汲取到力量和勇气。当我们遇到困难和挫折时,我们可以从森林中汲取到坚持和奋斗的力量;当我们感到疲惫和迷茫时,我们可以从森林中感受到宁静和安详的力量。这片森林是我们的精神家园,是我们的力量源泉。

让我们用心去感受这片美丽的森林,去感受大自然的美丽和神秘,去寻找那份来自内心的平静和宁静。让我们用行动去爱护它,去照顾它,去保护它,让它的美丽和神秘得以延续。因为这片森林不仅是大自然的杰作,更是我们心灵的净土,是我们生命中的宝贵财富。

image.gif编辑

相关文章
|
1月前
|
存储 算法 C++
C++ STL 初探:打开标准模板库的大门
C++ STL 初探:打开标准模板库的大门
94 10
|
3月前
|
编译器 C++
【C++】——初识模板
【C++】——初识模板
【C++】——初识模板
|
1月前
|
人工智能 算法 BI
第十四届蓝桥杯省赛大学C组(C/C++)三国游戏
第十四届蓝桥杯省赛大学C组(C/C++)三国游戏
|
4月前
|
程序员 C++
C++模板元编程入门
【7月更文挑战第9天】C++模板元编程是一项强大而复杂的技术,它允许程序员在编译时进行复杂的计算和操作,从而提高了程序的性能和灵活性。然而,模板元编程的复杂性和抽象性也使其难以掌握和应用。通过本文的介绍,希望能够帮助你初步了解C++模板元编程的基本概念和技术要点,为进一步深入学习和应用打下坚实的基础。在实际开发中,合理运用模板元编程技术,可以极大地提升程序的性能和可维护性。
|
1月前
|
编译器 程序员 C++
【C++打怪之路Lv7】-- 模板初阶
【C++打怪之路Lv7】-- 模板初阶
16 1
|
1月前
|
编译器 C语言 C++
C++入门6——模板(泛型编程、函数模板、类模板)
C++入门6——模板(泛型编程、函数模板、类模板)
41 0
C++入门6——模板(泛型编程、函数模板、类模板)
|
1月前
|
算法 编译器 C++
【C++篇】领略模板编程的进阶之美:参数巧思与编译的智慧
【C++篇】领略模板编程的进阶之美:参数巧思与编译的智慧
79 2
|
1月前
|
存储 编译器 C++
【C++篇】引领C++模板初体验:泛型编程的力量与妙用
【C++篇】引领C++模板初体验:泛型编程的力量与妙用
38 2
|
1月前
|
存储 算法 编译器
【C++】初识C++模板与STL
【C++】初识C++模板与STL
|
1月前
|
人工智能 算法 Java
【搜索算法】数字游戏(C/C++)
【搜索算法】数字游戏(C/C++)