写在前面:
  是笔者大二下的课内作业,要求是使用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复刻一个九宫幻卡小游戏(一)前期规划和准备工作相关推荐

  1. [SFML]使用SFML复刻一个九宫幻卡小游戏(二)项目创建和SFML的配置

    目录 一.项目创建 二.SFML的配置 1.下载 2.安装配置 1.解压 2.打开项目属性设置 3.设置项目属性 a.配置include目录 b.配置lib目录 c.指定要添加到链接命令行的附加项 4 ...

  2. 我用 MATLAB 复刻了抖音爆火小游戏 苹果蛇

    最近抖音上苹果蛇小游戏大火,为了证明MATLAB无所不能,咋能不跟风做一个?于是就有了这一篇. 还是提一句这个小游戏开始玩的心路历程: 第1-5关:?这不就是有重力的贪吃蛇,有任何难度嘛?? 第6关: ...

  3. Unity 游戏实例开发集合 之 CompoundBigWatermelon (简单合成一个大西瓜) 休闲小游戏快速实现

    Unity 游戏实例开发集合 之 CompoundBigWatermelon (简单合成一个大西瓜) 休闲小游戏快速实现 目录 Unity 游戏实例开发集合 之 CompoundBigWatermel ...

  4. python井字棋_用Python做一个井字棋小游戏

    井字棋是一个经典的小游戏,在九宫格上玩家轮流画OXO,当每列或每行或是两个对角成一线时便是获胜. 今天就用Python编写一个井字棋小游戏,与电脑对战. 程序执行画面如下图所示: 程序提供了两种人工智 ...

  5. python简单小游戏代码_一个简单的python小游戏---七彩同心圆

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理 用pygame做一个简单的python小游戏-七彩同心圆 玩法:每次点击鼠标时,会以鼠标为圆心,不断 ...

  6. python井字棋游戏人机对战_用Python做一个井字棋小游戏

    井字棋是一个经典的小游戏,在九宫格上玩家轮流画OXO,当每列或每行或是两个对角成一线时便是获胜. 今天就用Python编写一个井字棋小游戏,与电脑对战. 程序执行画面如下图所示: 程序提供了两种人工智 ...

  7. 分享一个蛋疼的俄罗斯方块小游戏

    分享一个蛋疼的俄罗斯方块小游戏 空间 转载请注明出处.http://www.cnblogs.com/dave_cn/ 我在Ubuntu 10.04下测试过,可以正常运行.不过界面让人蛋疼. 代码用到了 ...

  8. 基于C++控制台(Windows平台)的一个吃豆人小游戏

    PacManX --南京大学2019秋季学期 "高级程序设计 "课程设计一 基于C++控制台(Windows平台)的一个吃豆人小游戏 已实现的目标: 地图支持自定义编辑(可编辑地图 ...

  9. 玩一个猜数字的小游戏吧

    前言 大家一定都在聚会中玩过一个猜数字的小游戏吧? 就是主持人写下一个数字,在100以内,然后呢,大家就开始猜,每当一个人说出一个数字,主持人就说太大或者太小,然后慢慢的缩小范围,最后说对的人要接受惩 ...

最新文章

  1. 哈佛大学让青蛙断腿再生:有骨头有血管,对刺激物还会产生强烈踢腿反应
  2. wpf listbox绑定不跟新_你知道新媒体吗?好像跟想象的不太一样
  3. 秒懂云通信:选云通信到底哪家强?
  4. mongodb java driver 聚合框架
  5. (开源)Flask+Vue+Bootstrap3 人力资源用Web数据库
  6. Oracle入门(五C)之68个系统变量的key和默认value
  7. raspberry中配置机器学习的环境
  8. Centos8安装X11-forwarding图形服务
  9. linux查看系统版本_Win8系统查看directx版本的操作方法是什么?
  10. 51单片机实现简单计算器
  11. Delphi 有关的网址
  12. win10 网络发现 打开保存后,自动关闭
  13. CMS系统简介(从简介到使用)
  14. ISACA最新白皮书助力企业了解中国《个人信息保护法》
  15. python应用程序无法正常启动0xc000007b_应用程序无法正常启动0xc000007b怎么解决
  16. CCF201712-4 行车路线(最短路)
  17. UltraEdit15.10的注册码
  18. 列表元组和字典课后练习
  19. 2021年全球及中国小麦产量、消费及库存情况分析[图]
  20. 数据库——数据库的创建

热门文章

  1. 巴西电子商务公共数据集
  2. 【 Ubuntu20.04 下载搜狗输入法 — 附搜狗官方安装操作指南】
  3. 降温了好冷,总结下11月
  4. LeetCode 524. 通过删除字母匹配到字典里最长单词
  5. 上班时间偷偷搞副业被抓,程序员惨遭解雇,还要退还所有工资 !
  6. JavaWeb跨域单点登录
  7. 小米9,我连抢4场失败,蓝厂IQOO一次成功,还有MIUI和VIVO那啥系统的体验对比
  8. 30道linux操作系统shell程序综合设计题
  9. mysql命令or_常用的MySQL命令大全
  10. 新萝卜家园GHOST WIN7系统3专业装机版