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 23:二元树分支总和 sums of the branches

>>:  [第二十四天]从0开始的UnityAR手机游戏开发-设置APP的Icon

[重构倒数第12天] - Vue3 directive 与 Skeleton 实战组合应用

前言 该系列是为了让看过Vue官方文件或学过Vue但是却不知道怎麽下手去重构现在有的网站而去规画的系...

DAY 10 Partials, Modules

运用两种做法,去衍生不同样式的 css ! Partial Partial 是把 css 拆分的其中...

Day19 该如何发问问题?

大家好,我是乌木白,今天想和大家聊聊,如果在该如何去发问问题? 遇到问题该怎麽办? 在现今网路发达...

Day18 Lab 2 - Object storage metadata

Object的metadata让我们能快速定位Object在什麽地方、属性等等,可以理解为类似资料库...

802.1X 是网路访问控制 (NAC) 的 IEEE 标准

-802.1X 角色 .请求者不直接向 RADIUS 服务器进行身份验证。它向身份验证者进行身份验...