Articles of 扫雷

OpenGL调整问题

我正在开发一个扫雷游戏。 我正在重新调整窗口的大小。 我正在使用Ubuntu Linux。 以下是代码片段,整个代码在这里 : 这是我在main()的起始处编写的初始化代码, glutInit(&argc, argv); glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB); glutInitWindowSize (500, 500); glutInitWindowPosition (400, 300); glutCreateWindow ("MineSweeper"); glClearColor (1.0, 1.0, 1.0, 0.0); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0); 这是我的display()函数,我通过glutDisplayFunc(),实际上绘制网格需要扫雷游戏。 glClear (GL_COLOR_BUFFER_BIT); glColor3f (0.0, 0.0, 0.0); glLineWidth (3); float i; for(i = step; i< 1; i+=step) { glBegin(GL_LINES); glVertex3f(i,0,0); glVertex3f(i,1.0,0); […]

AI for Minesweeper喜欢游戏

我目前正在开发一个有点像扫雷的益智/角色扮演游戏。 你有一块瓷砖和2,3或4种不同的颜色,你可以select。 现在你必须揭开瓦片来攻击敌人。 因此,您需要为要打开的图块select正确的颜色。 如果你尝试错误的颜色,敌人可能会尝试。 只要你打开瓦片,敌人可能不会尝试(如果是敌人的话)。 现在我写了一个非常简单的AI,其工作原理如下: 它遍历整个字段并查找所有未打开的图块。 对于每个未打开的图块,它根据图块的邻居来计算得分。 所以一个未开封的邻居给+0,一个开放的邻居有一个0给+4,一个开放的邻居有一个4给+4,3给+3等等。 最后,得分是加权的,这取决于邻居有多less种不同的颜色以及它实际上有多less种不同的颜色(因为在边缘的瓦片具有较less的邻居)。 当谈到select一个瓷砖,它工作得很好。 然后,对于所选瓷砖,它会尝试每种颜色,从相邻开放瓷砖的某种颜色开始。 但艾滋病却不了解邻居可以告诉的。 所以没有实际的策略,除了:寻找一个瓷砖,尝试颜色,直到它被打开。 我在人工智能开发方面真的很新颖,并且很难围绕这个话题进行讨论。 我之前写的唯一一个AI就是一些简单的追逐二维空间射手。 所以我的问题是:在这样的情况下,一个好的AI会怎么样呢? 我认为最好给AI提供与玩家相同的信息。 所以它只知道瓷砖的数量,打开/closures的瓷砖以及打开的颜色和它们的邻居的数量。 这是正确的还是AI应该知道一切? 另外,AI应该是可以打败的。 你能给我一些关于如何/应该/通常完成的提示吗? 还是有一些文献可以为这个话题推荐? (我已经看过一本关于AI游戏的书,我想我可以用minimax,但是我不知道怎么做,也许我看到这个问题,因为寻路问题是一个解决scheme,但是我不太清楚。 为了更好的理解,这是一个游戏,就像我正在建设的一样,除了这个游戏没有AI和没有敌人转身(玩家只要点击一个错误的瓦片就被击中): GameLink

我可以用什么来在游戏中search瓷砖

我正在创建一个类似于扫雷的基于磁贴的游戏。 当用户点击一个瓷砖,而不是一个地雷或数字空间,我需要search和暴露相邻的瓷砖是空的,并停止时,它击中一个数字或板的边缘。 我现在正在工作,这样它将清除所点击的瓷砖的行,并停在编号的瓷砖或电路板的边缘。 我所拥有的将会很快变得丑陋,我相信有这样一个更简单的方法。 是否有一个searchalgorithm,我可以使用它会发现所有相邻的瓷砖,玩家点击只停止一旦它击中板的边缘或击中一个编号瓷砖?

陷入了扫雷的无限recursion

我正在试图建立一个简单的扫雷游戏。 每当用户点击一个不是我的地图的瓦片时,游戏就会陷入无限recursion。 我已经使用下面的function代码点击事件.. 当用户点击一个不是我的瓦片时,它的相邻瓦片将被检查到一个矿山,并且重复这个过程….我使用了一个recursion函数来禁用相邻瓦片不是我的瓦片。 .. protected void set_text_of_button(Button btn) { //all these objects specify the location of adjacent tiles Block Top, Top_Left, Top_Right, Left, Right, Bottom, Bottom_Left, Bottom_Right; //code to specify the location of adjacent tiles… //if adjacent tile is a mine then display the total number of tiles…. //recursive function should end in this […]

我应该如何计算扫雷中的分数:3BV还是3BV / s?

我正在devise一个扫雷游戏,对于如何计算分数我有点困惑。 我的游戏的目标是揭示所有未标记的框。 标记标记不得计入分数。 只是显示完成一个板所需的秒数似乎已经过时,因为我有一个由用户决定的可变的板尺寸。 我研究了关于这两种评分技术的维基百科页面上的扫雷 。 但我不明白如何计算3BV。 这只是用户在游戏中完成的左键点击次数,还是3BV是完成棋盘所需的最低点击次数? 另外3BV / s如何判断:更高或更低的分数给予更高的排名? 关于我的实施 我使用了一个全零的整数数组,9指定了一个矿的位置。 当用户点击网格时,我计算附近的单元格,然后显示相应的数字,如果他点击值为9的单元格,则游戏结束。

扫雷:鼠标听众的问题

我为游戏扫雷编写了一个代码,graphics没有问题,但MouseListener存在一些问题。 这是我的代码 /* * To change this template, choose Tools | Templates * and open the template in the editor. */ package mines_v3.pkg0; import java.awt.EventQueue; import java.awt.Graphics; import java.awt.Image; import java.awt.Toolkit; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.io.File; import java.io.IOException; import java.util.Random; import javax.imageio.ImageIO; import javax.swing.JComponent; import javax.swing.JFrame; /** * * @author Gevorg Hindoyan * @version […]

问题与实施扫雷algorithm

所以我试图通过扫雷来学习Python。 我有SDL的经验,所以我想玩PyGame听起来像一个有趣的方式来学习语言的语法。 任何人,我都会遇到一个问题,就像在一个正常的扫雷游戏中一样。 我点击一个有邻近地雷的单元格,然后尝试扫描顶部,左侧,右侧和底部,看看是否有邻近的地雷也有0个,我这样做是recursion的。 这是我收到的错误: RuntimeError: maximum recursion depth exceeded in cmp 这是我的algorithm: #open up blank mines def open_blank_cells(mines, cr, cc): #top if (cr > 0): t_mine = mines[cr-1][cc] t_mine.switch_state(3) if (t_mine.neighbor_mines == 0): open_blank_cells(mines, cr-1, cc) #right if (cc < 9): r_mine = mines[cr][cc+1] r_mine.switch_state(3) if (r_mine.neighbor_mines == 0): open_blank_cells(mines, cr, cc+1) #bottom if […]

用Perlin蠕虫生成洞穴

我目前正在尝试使用3D Simplex Noise生成一个类似于体素地形的Minecraft,并且还想实现洞穴。 我在这个线程中find了Perlin蠕虫的方法,它产生了非常好的结果。 但是,我不知道如何在块上生成块。 这是可能的还是有没有其他的select,产生类似的蠕虫像块大块的基础上块? 编辑: 这是我不知道如何解决的问题。 编辑2: 这是将2D脊形多重分形噪声与单纯形噪声高度图相结合的结果。 仍然需要一些调整,但这是我想要的结果。 感谢Byte56。