[SFML]使用SFML复刻一个九宫幻卡小游戏(一)前期规划和准备工作
写在前面:
是笔者大二下的课内作业,要求是使用SFML制作棋牌类游戏。本人水平较差,复刻开发过程中存在大量走弯路、走邪门、代码冗余等情况。写此博客记录已经是一年以后的复盘了,仅作为个人学习的记录。
目录
- 一、关于SFML
- 1、下载和安装配置
- 2、SFML的基本框架结构
- 二、关于游戏本身
- 1、九宫幻卡 Triple Triad
- 2、复刻开发的目标效果
- 3、前期素材准备
一、关于SFML
1、下载和安装配置
SFML 是多媒体库,它为PC的各个组件提供简单的界面,用来简化游戏和多媒体应用程序的开发。 主要由五个模块组成,分别是:系统,窗口,图形,音频和网络。
官方网址:https://www.sfml-dev.org/
从官网的DownLoad模块可以下载到所需要的文件,Learn模块可以学习包括安装和使用在内的全部基本内容。
Tutorials for SFML解决所有困惑!
Getting Started就是如何安装配置SFML的方法指引,下面是各个模块中的相关接口函数的使用说明和举例。
2、SFML的基本框架结构
1、 创建并初始化游戏窗口 window;
2、 使用 while(window.isOpen())建立主循环结构,循环条件是判断游戏窗口是否是打开的;
3、 主循环中,使用 while(window.pollEvent(event))轮询并处理游戏窗口输入事件,根据输入事件处理结果调整更新游戏对象
4、 主循环中,使用 window.clear(sf::Color::Black)清除游戏窗口缓存内容;
5、 主循环中,使用 window.draw()将更新后的游戏对象放入到游戏窗口缓存中;
6、 主循环中,使用 window.display()将游戏窗口缓存内容绘制到屏幕上。
二、关于游戏本身
1、九宫幻卡 Triple Triad
九宫幻卡是一款源自最终幻想8的卡牌对战型游戏,是在大型多人角色扮演类游戏中的一个休闲娱乐向的附加小游戏。这款游戏虽然体量小但是玩法多变,可以人机对战可以人人对战。通用规则如下:
牌桌为3x3的格子,每个格子最多放置一张卡牌,以卡牌底色(红和蓝)表示卡牌归属于哪一方。 双方玩家各持有5张卡组成的卡组,轮流把卡牌放在牌桌剩余的格子内。 先手由系统随机决定。
每张卡牌上有四个分布在上下左右的数字,从1到A(10)分别代表卡牌该侧的强度。
若己方打出的卡牌与对方卡牌相邻,则由两张卡牌相邻的数字决定产生的结果。若己方卡牌的数字大于对方的卡牌,则对方卡牌会改变底色,转而归属于己方。
9个格子都被卡牌占满后,包括后手玩家未打出的那张卡在内,拥有更多卡牌的人会获得胜利。 若双方依旧各持有5张卡牌,则本局视为平局。
这款小游戏最初与1999年在最终幻想8中出现,当时的游戏界面就像下面这张图。
虽然只是一个内置的小游戏,但是原创度很高,后续有很多电子游戏效仿,也有很多爱好者产出同人向的作品。
被称为最终幻想系列博物馆的最终幻想14(FF14)在“金蝶游乐场”中集合了众多历代最终幻想系列中的小游戏。其中最受欢迎也最重要的就是这款经典小游戏九宫幻卡。FF14重新改版制作,丰富了卡牌和玩法,受到众多玩家喜爱。游戏中不仅可以与NPC对战,也可以和其他玩家对战,还可以通过各种方式收集和扩充自己的卡组。
虽然笔者不是幻卡高手,但是出于对FF14的热爱,希望能在实现最简单的功能的基础上,尽量靠近此版本的美术水准。舍去自主选牌,改为随机发牌。此版暂时没有实现联机,只能在同一窗口交替操作或自我博弈。(之后在短学期以极其艰难的方式实现了比较简陋的服务器+客户端的联机模式,过程极度痛苦,按下不表)
2、复刻开发的目标效果
a.关于界面的规划
- 主界面:显示游戏名称、开发信息、版权归属、开始和退出按钮
- 游戏界面:
元素:原版游戏棋盘、原版卡面图案和数字设计、发牌方示意圆圈、倒计时时间条等
动画:发牌揭牌动画、随机确定先后手示意动画、翻转牌动画、交换出牌方动画等
- 结束界面:
示意游戏结果、重新开始和退出按钮
b.关于卡牌的规划
卡牌数量过多会加大工作量,所以只选取20张。根据对战双方颜色身份的不同,卡牌会呈现不同的底色。笔者惊喜发现在中文wiki上有png格式的卡面图案素材,也就是说只要把卡面和底色分开处理就可以节约材料了。
由于采取随机发牌,故每轮开局随机从20张卡牌构成的卡池里抽取5张分配给某一方玩家。
3、前期素材准备
相关素材不是一次性全部准备完毕的,而是在制作过程中不断完善修改。
主要分为:背景、底色、卡面、文字信息、其他零件。
主要处理方式有:游戏内截图、中文wiki下载保存、PS处理和绘制。
(所有美术素材仅供个人学习使用,不用于任何商业用途。)
[SFML]使用SFML复刻一个九宫幻卡小游戏(一)前期规划和准备工作相关推荐
- [SFML]使用SFML复刻一个九宫幻卡小游戏(二)项目创建和SFML的配置
目录 一.项目创建 二.SFML的配置 1.下载 2.安装配置 1.解压 2.打开项目属性设置 3.设置项目属性 a.配置include目录 b.配置lib目录 c.指定要添加到链接命令行的附加项 4 ...
- 我用 MATLAB 复刻了抖音爆火小游戏 苹果蛇
最近抖音上苹果蛇小游戏大火,为了证明MATLAB无所不能,咋能不跟风做一个?于是就有了这一篇. 还是提一句这个小游戏开始玩的心路历程: 第1-5关:?这不就是有重力的贪吃蛇,有任何难度嘛?? 第6关: ...
- Unity 游戏实例开发集合 之 CompoundBigWatermelon (简单合成一个大西瓜) 休闲小游戏快速实现
Unity 游戏实例开发集合 之 CompoundBigWatermelon (简单合成一个大西瓜) 休闲小游戏快速实现 目录 Unity 游戏实例开发集合 之 CompoundBigWatermel ...
- python井字棋_用Python做一个井字棋小游戏
井字棋是一个经典的小游戏,在九宫格上玩家轮流画OXO,当每列或每行或是两个对角成一线时便是获胜. 今天就用Python编写一个井字棋小游戏,与电脑对战. 程序执行画面如下图所示: 程序提供了两种人工智 ...
- python简单小游戏代码_一个简单的python小游戏---七彩同心圆
本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理 用pygame做一个简单的python小游戏-七彩同心圆 玩法:每次点击鼠标时,会以鼠标为圆心,不断 ...
- python井字棋游戏人机对战_用Python做一个井字棋小游戏
井字棋是一个经典的小游戏,在九宫格上玩家轮流画OXO,当每列或每行或是两个对角成一线时便是获胜. 今天就用Python编写一个井字棋小游戏,与电脑对战. 程序执行画面如下图所示: 程序提供了两种人工智 ...
- 分享一个蛋疼的俄罗斯方块小游戏
分享一个蛋疼的俄罗斯方块小游戏 空间 转载请注明出处.http://www.cnblogs.com/dave_cn/ 我在Ubuntu 10.04下测试过,可以正常运行.不过界面让人蛋疼. 代码用到了 ...
- 基于C++控制台(Windows平台)的一个吃豆人小游戏
PacManX --南京大学2019秋季学期 "高级程序设计 "课程设计一 基于C++控制台(Windows平台)的一个吃豆人小游戏 已实现的目标: 地图支持自定义编辑(可编辑地图 ...
- 玩一个猜数字的小游戏吧
前言 大家一定都在聚会中玩过一个猜数字的小游戏吧? 就是主持人写下一个数字,在100以内,然后呢,大家就开始猜,每当一个人说出一个数字,主持人就说太大或者太小,然后慢慢的缩小范围,最后说对的人要接受惩 ...
最新文章
- 哈佛大学让青蛙断腿再生:有骨头有血管,对刺激物还会产生强烈踢腿反应
- wpf listbox绑定不跟新_你知道新媒体吗?好像跟想象的不太一样
- 秒懂云通信:选云通信到底哪家强?
- mongodb java driver 聚合框架
- (开源)Flask+Vue+Bootstrap3 人力资源用Web数据库
- Oracle入门(五C)之68个系统变量的key和默认value
- raspberry中配置机器学习的环境
- Centos8安装X11-forwarding图形服务
- linux查看系统版本_Win8系统查看directx版本的操作方法是什么?
- 51单片机实现简单计算器
- Delphi 有关的网址
- win10 网络发现 打开保存后,自动关闭
- CMS系统简介(从简介到使用)
- ISACA最新白皮书助力企业了解中国《个人信息保护法》
- python应用程序无法正常启动0xc000007b_应用程序无法正常启动0xc000007b怎么解决
- CCF201712-4 行车路线(最短路)
- UltraEdit15.10的注册码
- 列表元组和字典课后练习
- 2021年全球及中国小麦产量、消费及库存情况分析[图]
- 数据库——数据库的创建