iT邦幫忙

2021 iThome 鐵人賽

DAY 26
0
Software Development

三十天內用C++寫出一個小遊戲系列 第 26

Day 26 - 你有沒有玩過LOL、特、CS、SF、楓之谷、APEX?

Game Intro

這個是我的遊戲的最初設計圖,其實算是蠻多遊戲的總和。

  • CS、SF、特戰英豪: 把前後左右移動放到 WSAD,就是基本槍戰遊戲會使用的按鍵,然後 Q 鍵的技能也是特戰英豪給我的靈感。
  • LOL: 英雄聯盟好玩的地方之一就是掌控視野,所以我也想加入一些視野上的變化,包含小地圖上的顯示,遊戲畫面本身的視野以及視野盲區。
  • Bullet Echo: 他是在手機平台上面的遊戲,其實它本身就很像我想製作的遊戲xD,他的遊戲畫面長這樣,也是有視野的設定,只不過它不需要瞄準,但我想說都在電腦上玩了,就用一下滑鼠(瞄準)吧。

  • 其實我也有想過要加入不同的元素,像是技能的屬性、角色的性質、血量,不過我必須要把前面的部分寫出來,才能繼續加入這些新的東西! 所以我必須先把這些東西先寫出來。

Searching process

我一開始其實不太知道要做甚麼遊戲,所以就隨便在 YouTube 上面打 "C++ game"

結果第一個就跑出:

Let's make 16 games in C++: TETRIS

這個 YouTuber 做了 16 種小遊戲,每個都有打 code 過程。

我原本心想,那就找幾個遊戲,然後把裡面的東西學一下,在做出自己的遊戲就好了吧! (Sounds freaking EZ)

但是代誌不是憨人所想的納尼簡單。

在我一看到她的 header file 的時候,我就想到,案情不單純。

我照打了他上面打的 code 想叫出我第一個視窗,也就是:

#include<SFML/Graphic.hpp>
#include<time.h>
using namespace sf;

int main()
{
	while(window.isOpen())
	{
		Event e;
		while (window.pollEvent(e))
		{
			if(e.type == Event::Closed)
				window.close();
		}
		
	window.clear(Color::White);
	window.draw(s);
	window.display;
	}
	return 0;
}

但是結果就是:

[Error] SFML Graphic.hpp: No such file or directory Great! 太好了?

所以我又上網找了 SFML 是甚麼。

( 簡單說他就是一個用來寫遊戲的好用的函式庫 ! )

接著不知不覺就找到了我現在學的這個 YouTuber,覺得他的教學還不錯,一步一步的讓觀眾了解他正在幹嘛(就是有解說),而且沒甚麼 accent (雖然印度人教得很好,但我有時候真的聽不懂,又沒有英文字幕),頓時讓我找到了一絲希望。


Getting Started

首先,我們需要具備的是 visual studio (我用的是 community 2019),還有 SFML 的檔案。

SFML 的教學都在這裡了 就讓你們自己去尋找吧!

如何把 SFML 鑲嵌進你的 visual studio 裡面,在這裡也講解了很多 你只需要一步一步做,最後一定可以的 !

【因為上面步驟有點繁瑣,也不是重點,所以直接跳過,進入開發遊戲的部分】


Window

要做一個遊戲,打開肯定是需要一個視窗的。所以我們需要先把視窗叫出來。

int main()
{
    sf::Window window(sf::VideoMode(800, 600), "My window");// for size, "name"

    // run the program as long as the window is open
    while (window.isOpen()) // if not, it'll shut down as soon as you open it
    {
        // check all the window's events that were triggered since the last iteration of the loop
        sf::Event event;
        while (window.pollEvent(event))
        {
            // "close requested" event: we close the window
            if (event.type == sf::Event::Closed) 
                window.close();
        }
		window.clear(Color::White);
		window.draw(s);
		window.display;
    }

    return 0;
}

非常的簡單,只要你執行它就會跑出一個大小為 800 x 600 的白色視窗,名稱就會寫 My window,像是這樣:


Next on

這篇介紹的東西稍微少了一點,但是明天會找到一些在 SFML 中蠻好玩的 function。


Ref

  • 這個 YouTuber 做的教學都很不錯,使用的也是 visual studio (我忘記哪一版本),所以感覺很適合我學一下。另外他在影片做出來的成品跟我的遊戲構想也頗像,所以就找他的來學了 !

SFML Tutorials

  • Github 的教學

Git


上一篇
Day 25 - 模板
下一篇
Day 27 - 看起來很無聊又很好玩的遊戲開發
系列文
三十天內用C++寫出一個小遊戲30

尚未有邦友留言

立即登入留言