Articles of 卡片游戏

在哪里以及如何将玩家collections在电脑卡中?

我正在开发一个交易卡游戏(类似“炉石传说”,但并不那么复杂),我面临着以下问题:我不知道存储玩家集合和套牌的最佳方式(他们拥有的卡牌)是什么。 我想将他们的藏品存储在他们设备上的本地文件上,但这看起来很糟糕,因为他们可能会修改该文件,并获得他们不应该拥有的卡片。 第二个想法是,我可以将他们所有的套牌和collections保存在数据库中。 但是每个玩家都有一张桌子是不可能的。 拥有一张包含所有数据PlayerCards(id, cardId, playerName, deckName)比如PlayerCards(id, cardId, playerName, deckName)的表似乎可以工作,但是表会很庞大,并且包含相当多的冗余数据(卡在同一个集合中但是在多个套牌)。 什么是正确的方法来做到这一点?

collections卡牌游戏,卡片和效果

基于回合制游戏的devise,其中行动有副作用 我正在建立一个卡牌游戏,在不同的情况下卡片可能会引发副作用。 对于如何处理不同的阶段,我有一个好主意,可以通过挂钩(事件)来触发不同的卡片来做某些事情,比如当一张卡片被播放,拿出一张额外的卡片等等。 我不知道我应该如何编写所有这些东西一起工作,我有一个GameState对象,处理游戏的状态(轮到谁,玩家对象,计时器)检查移动是否合法等。 我有一个卡类,目前只是一个types和名称getter / setters和属性。 我相信存储卡的最好方法是使用.JSON文件,因为这样可以让你简单地写一张新的卡。 为了达到副作用,我正在考虑通过卡片JSON文件来configuration“组件”。 { "name": "Ocean Humans", "type": "Creature", "components": { } } 然而,我不知道我应该如何将这些JSON文件组合成一些实际的工作对象。 当我调用一个hook_event(绘制一张卡,阶段开始)时,如何调用这些组件。 并确保正确的组件运行?

如何在交易卡游戏Libgdx中创建卡片布局

我正在尝试为我的交易卡片游戏创建卡片布局。 现在我使用这个代码: public class ClientCard extends Table { ClientCard(int cost, int attack, int health, String title, String description) { Texture texture = new Texture(Gdx.files.internal("data/"+title+".jpg")); Image image = new Image(texture); this.add(image).width(Gdx.graphics.getWidth() / 10).height(Gdx.graphics.getHeight() / 7).colspan(3); this.row(); Skin skin = new Skin(Gdx.files.internal("skin/glassy-ui.json")); Label cardName = new Label(title, skin); Label cardDescription = new Label(description, skin); Label cardCost = […]

我怎样才能从精灵表中dynamic加载正确的精灵?

我在统一制作一个简单的纸牌游戏。 游戏是基于一个标准的52卡包,具有相同的背面独特的面孔。 在我特定的游戏中,不同的牌值得不同的价值和不同的特殊能力。 这个游戏在桌上(在平局上,在牌桌上或在别人的手上)有52张牌,所以这个数字不会改变。 我认为制作Card预制并手动实例化52这将是一个坏主意。 即使是用代码来做,我想也会有点OTT,而且我应该在玩家面对面的时候实例化视觉卡片。 我有一张52张卡片和一张精灵图片,后者在多种模式下被导入为一个精灵,并切片成一个包含玩游戏所需的所有卡片的网格。 我现在面临的问题是,通过我的GameController脚本,我想要生成一个洗牌卡片,处理一些玩家,然后向玩家展示这些卡片。 然而,我不确定最好的方式,或者即使可能,dynamic地使用精灵表来实现这一点。 例如,如果我有以下内容: private CardRank rank; private CardSuite suite; private GameObject visualCard; // the card in the scene private void Start() { this.rank = CardRank.Ace; this.suite = CardSuite.Spades; } 这个类将由游戏管理器实例化。 我将有52个这样的代码。 每当我必须在场景中直观地显示一张牌时,我会使用一张卡片预制件,它基本上是一个带有SpriteRenderer的游戏对象。 我需要从精灵表中dynamic加载这个对象的正确的精灵。 像这样的东西: SpriteRenderer spriteRenderer = this.visualCard.renderer as SpriteRenderer; spriteRenderer.sprite = … 精灵表中的切片精灵实际上具有AS (黑桃A), 7H (七心)等格式的名称 – […]

基于回合的战略循环

我正在做一个策略游戏。 它是基于回合的,基于卡片的(比如Dominion风格),在客户端完成,最终人工智能正在进行中。 我已经实现了几乎所有的游戏逻辑(计算方法等),我开始在实际的游戏循环上工作。 在这样的游戏中实现游戏循环的“最佳”方式是什么? 我应该使用一个简单的“while gameActive”循环,一直运行到gameActive为False,并等待玩家input的部分? 还是应该通过用户界面来管理玩家操作来确定发生什么事情? 任何帮助表示赞赏。 我用Python(至less现在)来完成Python技能,尽管这个问题对于这个问题来说应该不重要。

在线纸牌游戏:游戏循环或基于事件?

我所做的唯一的游戏就是游戏循环。 我刚刚开始考虑建立一个在线扑克游戏,人们可以在大堂见面,等等。卡片似乎基于事件…游戏循环策略是否可行? 或者在等待某人转移的时候继续跑步只是浪费时间?

呈现缩小的卡片图像

我有高质量的SVG卡图像,但是当我缩小尺寸时,它们会大幅度地降低质量。 我尝试了两种渲染卡的方法(使用Inkscape和Imagemagics): 1)将SVG渲染到高分辨率的PNG并resize,然后: inkscape -D –export-png=QS1024.png –export-width=1024 QS.svg convert QS1024.png -filter Lanczos -sampling-factor 1×1 -resize 71x QS71.png 2)一次渲染SVG到适当大小的图像: inkscape -D –export-png=QS71.png –export-width=71 QS.svg 这两种方法都会生成模糊的卡片图像,看起来比旧的Windows卡更差。 从SVG源生成较小卡片图像的最佳方法是什么?不要过多地放弃质量? 更新:我使用Inkscape呈现SVG – > PNG和ImageMagick然后缩小PNG。 我试过用几个filter(Lanczos / Mitchell /等)使用convert-resize,但结果几乎相同。 原版的: 71x栅格:

我如何洗牌纸牌游戏?

我正在尝试开发一款适用于Android的纸牌游戏任何人都可以向我推荐如何编写用于有效洗牌的代码?

如何实现交易卡游戏的“特效卡”?

我想在这里写一种交易卡游戏,在某种程度上,它类似于万智牌 ,或者是游戏王! 纸牌游戏。 对于那些不熟悉它的人,基本上在游戏中,有一种特殊的卡牌(符卡/陷阱卡片等),具有可以弯曲游戏规则的特殊效果。 我完全不知道的是,如何实现这些卡的逻辑。 我有一些存储卡的数据的一些想法,它可以表明它具有什么样的能力,但是它可以做什么(可能只是一些简单的统计修改)是非常有限的。 为了让你知道这些卡片可以有什么样的效果,下面是一些在游戏王中出现的拼写卡效果的例子! 纸牌游戏: 复活已经被摧毁的生物 控制对手的生物 根据某些条件修改生物的属性(例如,某些名字被毁灭的生物的数量) 如果某些条件满足,特殊召唤某些生物。 将两个或更多生物融合成更强壮的生物。 豁免一些特殊牌的效果。 Konami制作了几款游戏的video游戏,包括AI和数千种卡片。 我不认为实际上可能对整个数据库进行硬编码,是吗? 当然,我所要做的就是不要像那些游戏一样复杂,但我很好奇,他们是如何实现这些的?