0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

C/C++項(xiàng)目實(shí)戰(zhàn):2D射擊游戲開發(fā)(簡(jiǎn)易版)

C語言編程學(xué)習(xí)基地 ? 來源:C語言編程學(xué)習(xí)基地 ? 2023-01-12 15:57 ? 次閱讀

每天一個(gè)C語言小項(xiàng)目,提升你的編程能力!

【第一版】

花了一天時(shí)間,用 easyx 做了一個(gè)小游戲,程序中所有的類函數(shù)都是內(nèi)聯(lián)函數(shù),大約 300 行。

【第二版】

主要做了代碼優(yōu)化,加強(qiáng)可讀性。

同時(shí)改了操作方式,玩家和敵人都可以在 x、y 方向上移動(dòng),敵人每隔一段時(shí)間會(huì)隨機(jī)換向。

游戲運(yùn)行截圖如下:

49f10e52-924c-11ed-bfe3-dac502259ad0.png

操作方式

玩家通過方向鍵移動(dòng),z鍵射擊,左 Shift 進(jìn)入低速移動(dòng)模式提高操作精度。

代碼說明

關(guān)于無阻塞延時(shí),首先,先要 ctime創(chuàng)建一個(gè) clock_t 變量 a,初始化為 clock(),貌似是自從 1970 年到現(xiàn)在的毫秒數(shù)。

我們要每隔 0.5 秒執(zhí)行函數(shù) func() 一次。

那么創(chuàng)建主循環(huán) while(1),調(diào)用前用 clock() - a;如果 clock() - a > 500,那么執(zhí)行 func(),并把 a 重新賦值為 clock()。

如果使用 Sleep(500) 的話,這個(gè)循環(huán)就只能執(zhí)行 func 函數(shù)了,在此期間什么也做不了。

代碼展示:

(直接上源碼,大家可以看注釋)

/* 作者:STF(QQ:2292683261)*/
#include 
#include 
#include 




void hp_bar();
void show_player();
void show_enemy();
void move_enemy();
void draw_background();
int generate_line();          // 若返回 -1,表示生成線條失敗


int create_p_b();            // 創(chuàng)建自機(jī)的子彈
int create_e_b();            // 創(chuàng)建敵機(jī)的子彈


int destroy_p_b(int index);
int destroy_e_b(int index);        // 刪除一個(gè)子彈


#define FRAMERATE 20          // 畫面刷新的周期(ms)
#define FIRERATE 350          // 射擊間隔時(shí)間
#define E_FIRERATE 350          // 敵人射擊間隔
#define BLEED_TIME 150          // 受傷閃爍時(shí)間


#define BACKGROUND 80          // 繪制背景線條的周期


#define MAX_LINES 75          // 最多同屏背景線條數(shù)目
#define MAX_PLAYER_BULLETS 40      // 最多同屏自機(jī)子彈數(shù)目
#define MAX_ENEMY_BULLETS 40      // 最多同屏敵機(jī)子彈數(shù)目




int player_pos[2] = { 30,30 };            // 自機(jī)位置xy
int enemy_bullet[MAX_ENEMY_BULLETS][2];        // 敵人的子彈位置
int player_bullet[MAX_PLAYER_BULLETS][2];      // 自機(jī)的子彈位置
int enemy_pos[2] = { 580,240 };            // 敵機(jī)位置
bool p_b_slots[MAX_PLAYER_BULLETS] = { false };    // 用于判斷 player_bullet 的某個(gè)位置是否可用
bool e_b_slots[MAX_ENEMY_BULLETS] = { false };
int number_p_b = 0, number_e_b = 0;          // 記錄自機(jī)和敵機(jī)的子彈數(shù),減少遍歷壓力


int player_health = 100, enemy_health = 100;


bool isBleeding_p = false, isBleeding_e = false;  // 用于實(shí)現(xiàn)命中后的閃爍效果




int background_line[MAX_LINES][3];          // 背景的線條,三個(gè)參數(shù)分別是 x、y、長(zhǎng)度
bool line_slots[MAX_LINES] = { false };
int number_lines = 0;                // 記錄背景線條數(shù)目




clock_t begin_time = 0;


int main()
{
  initgraph(640, 550, 4);


  srand((unsigned)time(NULL));


  settextcolor(RGB(0, 254, 0));
  settextstyle(30, 0, L"微軟雅黑");
  outtextxy(50, 200, L"方向鍵移動(dòng), Z 攻擊, 左 Shift 切換低速模式");


  bool win = false, dead = false;


  clock_t firerate = clock();            // 射擊控制
  clock_t e_firerate = clock();          // 控制敵機(jī)的射擊
  clock_t runtime = clock();            // 用于控制畫面刷新頻率
  clock_t bleed_p = clock(), bleed_e = clock();  // 用于實(shí)現(xiàn)受傷閃爍
  clock_t backgroundline_generate = clock();    // 用于生成背景線條
  Sleep(3000);
  BeginBatchDraw();


  bool leftshift = false;


  begin_time = clock();
  while (true)
  {


    if (clock() - runtime >= FRAMERATE)
    {
      runtime = clock();
      cleardevice();
      draw_background();
      hp_bar();// 畫血條
      show_player();
      show_enemy();


      int n_p_b = 1, n_e_b = 1;          // 計(jì)數(shù),遍歷子彈,刷新位置
      int p_b_toprocess = number_p_b, e_b_toprocess = number_e_b;  // 需要處理的子彈數(shù)
      for (int i = 0; i < MAX_PLAYER_BULLETS && (n_p_b <= p_b_toprocess || n_e_b <= e_b_toprocess); ++i)
      {
        if (n_p_b <= p_b_toprocess)        // 如果子彈已經(jīng)處理完就不處理了
        {
          if (p_b_slots[i] == true)
          {
            ++n_p_b;
            player_bullet[i][0] += 3;
            setfillcolor(RGB(150, 180, 210));
            if (player_bullet[i][0] >= 635)
            {
              destroy_p_b(i);  // 到達(dá)了屏幕最右端
            }


            // 碰撞檢測(cè),兩個(gè)矩形
            if ((player_bullet[i][0] + 5 >= enemy_pos[0] - 20 && player_bullet[i][0] - 5 <= enemy_pos[0] + 20) && (player_bullet[i][1] - 5 < enemy_pos[1] + 40 && player_bullet[i][1] + 5 > enemy_pos[1] - 40))
              // 擊中敵人
            {
              destroy_p_b(i);
              enemy_health -= 8;
              isBleeding_e = true;
              bleed_e = clock();
            }


            fillrectangle(player_bullet[i][0] - 5, player_bullet[i][1] - 5, player_bullet[i][0] + 5, player_bullet[i][1] + 5);    // 畫子彈
          }


        }


        if (n_e_b <= e_b_toprocess)        // 敵人的子彈
        {
          if (e_b_slots[i] == true)
          {
            ++n_e_b;
            enemy_bullet[i][0] -= 3;
            setfillcolor(RGB(255, 180, 20));
            if (enemy_bullet[i][0] < 5)
            {
              destroy_e_b(i);
            }


            // 碰撞檢測(cè),兩個(gè)矩形
            if (enemy_bullet[i][0] - 5 < player_pos[0] + 25 && enemy_bullet[i][0] + 5 > player_pos[0] - 25 && enemy_bullet[i][1] - 5 < player_pos[1] + 25 && enemy_bullet[i][1] + 5 > player_pos[1] - 25)
            {
              // 擊中自機(jī)
              isBleeding_p = true;
              destroy_e_b(i);
              player_health -= 8;
              bleed_p = clock();
            }
            fillrectangle(enemy_bullet[i][0] - 5, enemy_bullet[i][1] - 5, enemy_bullet[i][0] + 5, enemy_bullet[i][1] + 5);
          }


        }
      }


      if (win || dead)
        break;
      FlushBatchDraw();


      move_enemy();


      if (player_health <= 0)
        dead = true;
      if (enemy_health <= 0)
      {
        win = true;
      }


      if (GetAsyncKeyState(VK_LSHIFT) & 0x8000)  // 按住 Shift 減速
      {
        leftshift = true;
      }
      else
      {
        leftshift = false;
      }


      if (GetAsyncKeyState(VK_UP) & 0x8000)
        // 玩家移動(dòng)
      {
        if (player_pos[1] >= 28)
          if (leftshift)
            player_pos[1] -= 2;        // y 的正方向是向下的
          else
            player_pos[1] -= 5;
      }
      if (clock() - firerate >= FIRERATE && GetAsyncKeyState('Z') & 0x8000)
        // 玩家開火
      {
        firerate = clock();
        create_p_b();
      }
      if (GetAsyncKeyState(VK_DOWN) & 0x8000)
        // 玩家移動(dòng)
      {
        if (player_pos[1] <= 452)
          if (leftshift)
            player_pos[1] += 2;
          else
            player_pos[1] += 5;
      }
      if (GetAsyncKeyState(VK_LEFT) & 0x8000)
        // 玩家移動(dòng)
      {
        if (player_pos[0] >= 30)
          if (leftshift)
            player_pos[0] -= 2;
          else
            player_pos[0] -= 5;
      }
      if (GetAsyncKeyState(VK_RIGHT) & 0x8000)
        // 玩家移動(dòng)
      {
        if (player_pos[0] <= 320)
          if (leftshift)
            player_pos[0] += 2;
          else
            player_pos[0] += 5;
      }




      if (clock() - e_firerate >= E_FIRERATE)
      {
        e_firerate = clock();
        create_e_b();
      }




      if (clock() - bleed_p >= BLEED_TIME)    // 受傷時(shí)間結(jié)束后關(guān)閉受傷閃爍效果
      {
        isBleeding_p = false;
      }


      if (clock() - bleed_e >= BLEED_TIME)    // 受傷時(shí)間結(jié)束后關(guān)閉受傷閃爍效果
      {
        isBleeding_e = false;
      }


      if (clock() - backgroundline_generate >= BACKGROUND)
      {
        backgroundline_generate = clock();
        generate_line();
      }
    }
  }
  if (win)
  {
    settextcolor(RGB(0, 254, 0));
    settextstyle(35, 0, L"黑體");
    outtextxy(150, 200, L"你打敗了boss!你贏了?。?);
  }
  else
  {
    settextcolor(RGB(254, 0, 0));
    settextstyle(35, 0, L"黑體");
    outtextxy(140, 200, L"你被boss打敗了!");
  }
  FlushBatchDraw();
  Sleep(5000);
  EndBatchDraw();
  return 0;
}












void hp_bar()
{
  setlinecolor(RGB(255, 255, 255));
  line(0, 481, 640, 481);                    // 一條分割線
  settextstyle(20, 0, L"黑體");
  outtextxy(10, 485, L"BOSS的生命值:");
  outtextxy(10, 520, L"玩家的生命值:");
  setfillcolor(RGB(0, 255, 1));
  setlinecolor(WHITE);
  rectangle(160, 515, 560, 540);                // 血條外框
  setfillcolor(RGB(0, 255, 1));
  setlinecolor(RGB(255, 255, 255));
  if (player_health > 0)
    fillrectangle(160, 515, 160 + player_health * 4, 540);  // 玩家血條
  setlinecolor(WHITE);
  rectangle(160, 485, 560, 510);                // 敵人血條外框
  setfillcolor(RGB(230, 0, 1));
  setlinecolor(RGB(255, 255, 255));
  if (enemy_health > 0)
    fillrectangle(160, 485, 160 + enemy_health * 4, 510);  // 敵人血條


}


void show_player()
{
  if (isBleeding_p)
    setfillcolor(RGB(255, 0, 0));
  else
    setfillcolor(RGB(150, 180, 210));
  fillrectangle(player_pos[0] - 25, player_pos[1] - 25, player_pos[0] + 25, player_pos[1] + 25);
  setfillcolor(RGB(100, 200, 180));
  fillrectangle(player_pos[0], player_pos[1] + 5, player_pos[0] + 40, player_pos[1] - 5);
}


void show_enemy()
{
  if (isBleeding_e)
    setfillcolor(RGB(255, 0, 0));
  else
    setfillcolor(RGB(0, 130, 125));
  fillrectangle(enemy_pos[0] - 20, enemy_pos[1] - 40, enemy_pos[0] + 20, enemy_pos[1] + 40);
  setfillcolor(RGB(100, 200, 180));
  fillrectangle(enemy_pos[0], enemy_pos[1] + 5, enemy_pos[0] - 40, enemy_pos[1] - 5);
}


void move_enemy()
{
  static bool angle_v;    // 控制敵機(jī)的豎直移動(dòng)方向,true 為向上,到邊緣就換向
  static bool angle_h;    // 控制敵機(jī)的水平移動(dòng)方向,true 為向左,到邊緣就換向
  static clock_t interval;  // 定時(shí)隨機(jī)換向


  if (clock() - interval >= 2000)
  {
    interval = clock();
    if (rand() % 2)      // 一般的概率換向
      angle_v = !angle_v;
    if (rand() % 2)
      angle_h = !angle_h;
  }


  if (angle_v == true)    // 到了地圖邊緣就調(diào)頭
    enemy_pos[1] -= 3;
  else
    enemy_pos[1] += 3;
  if (angle_h == true)
    enemy_pos[0] -= 3;
  else
    enemy_pos[0] += 3;




  if (enemy_pos[1] >= 440)
    angle_v = true;
  else if (enemy_pos[1] <= 40)
    angle_v = false;




  if (enemy_pos[0] >= 580)
    angle_h = true;
  else if (enemy_pos[0] <= 380)
    angle_h = false;


}


void draw_background()
{
  setlinecolor(WHITE);
  int n_b_l = number_lines;    // 待處理線條數(shù)目
  for (int i = 0; i < MAX_LINES && (n_b_l > 0); ++i)
  {
    if (line_slots[i] == true)
    {
      if (background_line[i][0] + background_line[i][2] <= 0)    // 說明線條出了屏幕
      {
        --number_lines;
        line_slots[i] = false;
      }
      else
      {
        background_line[i][0] -= 10;        // 線條移動(dòng)
        line(background_line[i][0], background_line[i][1], background_line[i][0] + background_line[i][2], background_line[i][1]);
      }
      --n_b_l;
    }


  }
}


int generate_line()
{
  if (number_lines >= MAX_LINES)
    return -1;
  ++number_lines;
  for (int i = 0; i < MAX_LINES; ++i)
  {
    if (line_slots[i] == false)
    {
      line_slots[i] = true;
      background_line[i][0] = 640;        // 線條出現(xiàn)于屏幕最右邊
      background_line[i][1] = rand() % 480;    // 線條高度隨機(jī)
      background_line[i][2] = 10 + rand() % 50;  // 線條長(zhǎng)度隨機(jī)在 10-50 像素之間


      break;
    }
  }
  return 0;
}


int create_p_b()
{
  if (number_p_b > MAX_PLAYER_BULLETS)      // 空間不夠
    return -1;
  for (int i = 0; i < MAX_PLAYER_BULLETS; ++i)  // 搜索 slots,尋找空位
  {
    if (p_b_slots[i] == false)
    {
      p_b_slots[i] = true;
      player_bullet[i][0] = player_pos[0] + 45;
      player_bullet[i][1] = player_pos[1];  // 創(chuàng)建子彈
      ++number_p_b;
      break;
    }
  }
  return 0;
}


int create_e_b()
{
  if (number_e_b > MAX_ENEMY_BULLETS)        // 空間不夠
    return -1;
  for (int i = 0; i < MAX_ENEMY_BULLETS; ++i)    // 搜索 slots,尋找空位
  {
    if (e_b_slots[i] == false)
    {
      e_b_slots[i] = true;
      enemy_bullet[i][0] = enemy_pos[0] - 45;
      enemy_bullet[i][1] = enemy_pos[1];    // 創(chuàng)建子彈
      ++number_e_b;
      break;
    }
  }
  return 0;
}


int destroy_p_b(int index)
{
  if (index > MAX_PLAYER_BULLETS - 1)
    return -2;
  if (p_b_slots[index] == false)
    return -1;
  p_b_slots[index] = false;
  --number_p_b;
  return 0;
}


int destroy_e_b(int index)
{
  if (index > MAX_ENEMY_BULLETS - 1)
    return -2;
  if (e_b_slots[index] == false)
    return -1;
  e_b_slots[index] = false;
  --number_e_b;
  return 0;
}

大家趕緊去動(dòng)手試試吧!

此外,我也給大家分享我收集的其他資源,從最零基礎(chǔ)開始的教程到C語言C++項(xiàng)目案例,幫助大家在學(xué)習(xí)C語言的道路上披荊斬棘!

審核編輯 :李倩


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • C語言
    +關(guān)注

    關(guān)注

    180

    文章

    7581

    瀏覽量

    135590
  • C++
    C++
    +關(guān)注

    關(guān)注

    21

    文章

    2090

    瀏覽量

    73406

原文標(biāo)題:C/C++項(xiàng)目實(shí)戰(zhàn):2D射擊游戲開發(fā)(簡(jiǎn)易版),440 行源碼分享來啦~

文章出處:【微信號(hào):cyuyanxuexi,微信公眾號(hào):C語言編程學(xué)習(xí)基地】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    C++中實(shí)現(xiàn)類似instanceof的方法

    函數(shù),可實(shí)際上C++中沒有。但是別著急,其實(shí)C++中有兩種簡(jiǎn)單的方法可以實(shí)現(xiàn)類似Java中的instanceof的功能。 在 C++ 中,確定對(duì)象的類型是編程中實(shí)際需求,使開發(fā)人員
    的頭像 發(fā)表于 07-18 10:16 ?436次閱讀
    <b class='flag-5'>C++</b>中實(shí)現(xiàn)類似instanceof的方法

    通過2D/3D異質(zhì)結(jié)構(gòu)精確控制鐵電材料弛豫時(shí)間

    受經(jīng)典德拜弛豫啟發(fā)的米勒模型提供了通過操縱弛豫時(shí)間來控制自發(fā)極化的理論框架。作者通過使用層轉(zhuǎn)移技術(shù)形成的2D/C-3D/2D異質(zhì)結(jié)構(gòu)克服了傳統(tǒng)異質(zhì)結(jié)存在的鐵電性惡化和能量損失的問題。
    的頭像 發(fā)表于 04-29 10:27 ?489次閱讀
    通過<b class='flag-5'>2D</b>/3<b class='flag-5'>D</b>異質(zhì)結(jié)構(gòu)精確控制鐵電材料弛豫時(shí)間

    鴻蒙OS開發(fā)實(shí)例:【Native C++

    使用DevEco Studio創(chuàng)建一個(gè)Native C++應(yīng)用。應(yīng)用采用Native C++模板,實(shí)現(xiàn)使用NAPI調(diào)用C標(biāo)準(zhǔn)庫的功能。使用C標(biāo)準(zhǔn)庫hypot接口計(jì)算兩個(gè)給定數(shù)平方和的平
    的頭像 發(fā)表于 04-14 11:43 ?2349次閱讀
    鴻蒙OS<b class='flag-5'>開發(fā)</b>實(shí)例:【Native <b class='flag-5'>C++</b>】

    谷歌DeepMind推新AI模型Genie,能生成2D游戲平臺(tái)

    據(jù)報(bào)道,谷歌公司的DeepMind團(tuán)隊(duì)近期發(fā)布了AI模型Genie,此模型擁有多達(dá)110億個(gè)參數(shù),能夠依據(jù)用戶提供的圖片及提示詞創(chuàng)建出相當(dāng)完整的2D游戲場(chǎng)景。
    的頭像 發(fā)表于 02-27 14:53 ?680次閱讀

    c語言,c++,java,python區(qū)別

    C語言、C++、Java和Python是四種常見的編程語言,各有優(yōu)點(diǎn)和特點(diǎn)。 C語言: C語言是一種面向過程的編程語言。它具有底層的特性,能夠?qū)τ?jì)算機(jī)硬件進(jìn)行直接操作。
    的頭像 發(fā)表于 02-05 14:11 ?1662次閱讀

    C++簡(jiǎn)史:C++是如何開始的

    MISRA C++:2023,MISRA? C++ 標(biāo)準(zhǔn)的下一個(gè)版本,來了!為了幫助您做好準(zhǔn)備,我們介紹了 Perforce 首席技術(shù)支持工程師 Frank van den Beuken 博士撰寫
    的頭像 發(fā)表于 01-11 09:00 ?487次閱讀
    <b class='flag-5'>C++</b>簡(jiǎn)史:<b class='flag-5'>C++</b>是如何開始的

    如何使用SystemC做RTL和C/C++的聯(lián)合仿真呢?

    當(dāng)FPGA開發(fā)者需要做RTL和C/C++聯(lián)合仿真的時(shí)候,一些常用的方法包括使用MicroBlaze軟核,或者使用QEMU仿真ZYNQ的PS部分。
    的頭像 發(fā)表于 12-13 10:13 ?1049次閱讀
    如何使用SystemC做RTL和<b class='flag-5'>C</b>/<b class='flag-5'>C++</b>的聯(lián)合仿真呢?

    WTN6170-8S語音芯片:射擊游戲機(jī)新時(shí)代,CS音效射擊體驗(yàn)引領(lǐng)者

    射擊游戲機(jī)啟動(dòng)時(shí),WTN6170-8S語音芯片通過戰(zhàn)場(chǎng)音效,如爆炸聲、射擊聲等,迅速拉近玩家與虛擬戰(zhàn)場(chǎng)的距離,為游戲的開始注入一股刺激的氛圍。2
    的頭像 發(fā)表于 12-13 09:21 ?471次閱讀
    WTN6170-8S語音芯片:<b class='flag-5'>射擊</b><b class='flag-5'>游戲</b>機(jī)新時(shí)代,CS音效<b class='flag-5'>射擊</b>體驗(yàn)引領(lǐng)者

    C語言和C++中那些不同的地方

    C語言雖說經(jīng)常和C++在一起被大家提起,但可千萬不要以為它們是一個(gè)東西。現(xiàn)在我們常用的C語言是C89標(biāo)準(zhǔn),C++
    的頭像 發(fā)表于 12-07 14:29 ?853次閱讀
    <b class='flag-5'>C</b>語言和<b class='flag-5'>C++</b>中那些不同的地方

    開箱即用!教你如何正確使用華為云CodeArts IDE for C/C++!

    華為云CodeArts IDE 定位華為云開發(fā)者桌面 ,是華為云面向開發(fā)者提供的一款智能化桌面集成開發(fā)環(huán)境。CodeArts IDE for C/C
    的頭像 發(fā)表于 11-29 17:40 ?697次閱讀
    開箱即用!教你如何正確使用華為云CodeArts IDE for <b class='flag-5'>C</b>/<b class='flag-5'>C++</b>!

    如何選擇創(chuàng)建c語言和c++

    選擇創(chuàng)建 C 語言和 C++ 都需要綜合考慮多個(gè)因素。在決定使用哪種語言之前,我們需要對(duì)這兩種語言的特點(diǎn)、優(yōu)缺點(diǎn)、適用場(chǎng)景、學(xué)習(xí)成本等進(jìn)行全面的了解和對(duì)比。下面是關(guān)于選擇創(chuàng)建 C 語言和 C+
    的頭像 發(fā)表于 11-27 15:58 ?529次閱讀

    visualc++怎么新建c語言文件

    Visual C++ 是一個(gè)集成開發(fā)環(huán)境(IDE),用于開發(fā) CC++ 程序。在 Visual C
    的頭像 發(fā)表于 11-27 15:57 ?3302次閱讀

    c++怎么開始編程

    C++是一種高級(jí)的、通用的編程語言,用于開發(fā)各種類型的應(yīng)用程序。它是從C語言演變而來,也是一種靜態(tài)類型語言,可以在不同的平臺(tái)上進(jìn)行開發(fā)C++
    的頭像 發(fā)表于 11-27 15:56 ?826次閱讀

    c++多行注釋快捷鍵

    */ 結(jié)束。在這兩個(gè)標(biāo)記之間的所有內(nèi)容都會(huì)被視為注釋,并且不會(huì)參與編譯和執(zhí)行。 為了添加或刪除多行注釋,你可以使用C++的集成開發(fā)環(huán)境(IDE)提供的快捷鍵。下面是一些常見的C++開發(fā)
    的頭像 發(fā)表于 11-22 10:24 ?7521次閱讀

    C++之父新作帶你勾勒現(xiàn)代C++地圖

    為了幫助大家解決這些痛點(diǎn)問題,讓大家領(lǐng)略現(xiàn)代C++之美,掌握其中的精髓,更好地使用C++C++之父Bjarne Stroustrup坐不住了,他親自操刀寫就了這本《C++之旅》!
    的頭像 發(fā)表于 10-30 16:35 ?746次閱讀
    <b class='flag-5'>C++</b>之父新作帶你勾勒現(xiàn)代<b class='flag-5'>C++</b>地圖