- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在用 C 语言制作 Roguelike 游戏,但我无法让我的角色按照我想要的方式移动。我在点 (x, y) 处制作了一个带有字符的二维字符数组,绘制了数组,更改了 x 和 y 值,并根据输入的方向重新绘制了数组(有点像 Zork 但图形)。但这并没有按照我的计划进行。代码将比我能解释的更多:
/* game.h (header file for globals) */
#define GAME_H
char character = '@';
//char monster = '&';
int x = 2;
int y = 2;
/* my beginning floor
(will not be implemented, just for testing movement) */
char floor[10][6] = { /* 219 = filled block, 32 = space */
219, 219, 219, 219, 219, 219, 219, 219, 219, '\n',
219, 32, 32, 32, 32, 32, 32, 32, 219, '\n',
219, 32, 32, 32, 32, 32, 32, 32, 219, '\n',
219, 32, 32, 32, 32, 32, 32, 32, 219, '\n',
219, 219, 219, 219, 219, 219, 219, 219, 219, '\n'};
/* game.c (main file) */
#include <stdio.h>
#include "game.h"
int main(void){
system("cls");
floor[x][y] = character;
printf("%s", floor);
char move;
redo:
printf("\nTravel which way?\n");
printf("a = left\ns = down\nd = up\nf = right\n\n>");
scanf("%s", &move);
/*
array oftentimes gets desroyed because the newlines are
being overwritten by the assignments.
the if statements should have prevented this.
why didn't they?
*/
if (move == 'a'){ /* LEFT */
if (x < 1){
x = 1;}
x--;
floor[x][y] = character;
floor[x+1][y] = ' ';
system("cls");
printf("%s", floor);
goto redo;
} else if (move == 's'){ /* DOWN (works, but goes right. Sometimes clones itself) */
if (y > 3){
y = 3;} /*bounds may be wrong*/
y++;
floor[x][y] = character;
floor[x][y-1] = ' ';
system("cls");
printf("%s", floor);
goto redo;
} else if (move == 'd'){ /* UP */
if (y < 1){
y = 1;}
y--;
floor[x][y] = character;
floor[x][y+1] = ' ';
system("cls");
printf("%s", floor);
goto redo;
} else if (move == 'f'){ /* RIGHT */
if (x > 7){
x = 7;}
x++;
floor[x][y] = character;
floor[x-1][y] = ' ';
system("cls");
printf("%s", floor);
goto redo;}
else {
goto done;
}
done:
return 0;
}
谁能告诉我我做错了什么?
注意:此 map 设置只是草稿。一旦机制完成,我将以完全不同的方式进行操作,但我将计划以几乎相同的方式沿数组移动角色,所以我宁愿在这个特定设置上获得帮助,而不是如何建议做得更好/不同。但是,显示更好实现的相关答案和源代码仍然有用和值得赞赏,因为我自己可能一开始就完全错了,因为这是我的第一个 Roguelike 游戏。
最佳答案
我觉得你的 floor 声明有点奇怪尝试做这样的事情:
//c arrays are generally array[rows][columns]
int rows = 6, cols = 10;
char floor[rows][cols] = {
{219, 219, 219, 219, 219, 219, 219, 219, 219, '\n'},
{219, 32, 32, 32, 32, 32, 32, 32, 219, '\n'},
{219, 32, 32, 32, 32, 32, 32, 32, 219, '\n'},
{219, 32, 32, 32, 32, 32, 32, 32, 219, '\n'},
{219, 219, 219, 219, 219, 219, 219, 219, 219, '\n'}};
此处示例 http://ideone.com/O7UG8g .我在该示例中更改了 219->35,因为我认为打印扩展的 ascii 在该站点上不起作用。
另外我认为绑定(bind)检查应该是这样的:
//move left (go one column left)
//if current position is array[curRow][curCol]
//assuming array[0][0] is top left of map
//check if left is a wall
if((curCol - 1) == charForAWall)
return;
else
curCol--;
右边是 +1 列,向上 -1 行,向下 +1 行。
关于C:Roguelike map 很奇怪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15890607/
就目前情况而言,这个问题不太适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、民意调查或扩展讨论。如果您觉得这个问题可以改进并可能重新开放,visit
我正在制作一款 roguelike 游戏,我正在尝试将“快速而肮脏”的 FOV 技术应用到我的游戏中,但我遇到了一些问题。我几乎可以肯定它在我的函数中完成了线计算,其中我有一个 x 和 y 变量沿着
我正在为一款基于 ascii 字符的 roguelike 游戏编写绘图系统(类似于矮人要塞的图形)。我正在使用 here 中的 AsciiPanel 。我的问题是,当我在 map 上绘制实体时,它们似
我正在做一个大学 compsci 项目,我需要一些关于视野算法的帮助。我主要工作,但在某些情况下,算法会看穿墙壁并突出显示玩家不应该看到的墙壁。 void cMap::los(int x0, int
作为 JAVA 继承的学习进程,我组合了一个调度程序类和参与者类。调度程序类创建一个参与者对象列表,并通过它们调用参与者的 act()。 现在,我对 actor 类的第一直觉是向玩家 actor 传递
我正在开发一款 Roguelike 游戏,作为编程/数据库练习和爱好(因为我想拥有自己的“矮人堡垒”项目来随心所欲地称霸)。当我试图编写一个足够强大的系统来生成游戏中的各种生物时,我很早就陷入了困境。
我继续在我的 python roguelike 上取得进展,并进一步深入学习本教程:http://roguebasin.roguelikedevelopment.org/index.php?title
当我尝试运行这段代码时,在 game_start 函数中创建的 pygame 窗口没有启动。当我删除 game_main_loop 功能时,它确实如此。我无法弄清楚该功能有什么问题,有人有任何想法吗?
我正在用 C 语言制作 Roguelike 游戏,但我无法让我的角色按照我想要的方式移动。我在点 (x, y) 处制作了一个带有字符的二维字符数组,绘制了数组,更改了 x 和 y 值,并根据输入的方向
好吧,这听起来像是一个疯狂的想法 - 但我有兴趣模仿 1980 年代的风格 roguelike game纯 Java 中的文本界面,即使用 Swing 或类似软件。 这里大致是它需要做的: 提供固定大
又是我。我仍在开发 Roguelike 游戏,但我还有另一个问题。我使用 Jlabel 的 2D 数组在 GridLayout 上显示我的 map ,它工作得很好。但现在,我想在地板上画我的角色、怪物
[更新] 我尝试使用下面的建议,但仍然有一个问题,即敌人似乎同时移动,并且当第一次看到是否已经有敌人在视线中时,他们每个移动两次。我真正想做的是在玩家视线中的敌人的行动之间有一个延迟,这样他们就不会同
我已经使用 Libgdx 从键盘字符中生成了一个地牢。我决定将数组打印为文本文件。 然而这是我得到的: 而且不一致 我不明白这是怎么回事?我检查了我的算法,没有发现任何错误。 这是我的代码: publ
几个月来我一直梦想制作 Roguelike,但出于某种原因,我固执的头脑不允许我使用图书馆。如何在不使用 stdio.h 以外的库的情况下绘制 map 并对其进行操作? 最佳答案 C 不知道“键盘”或
我有一些现有的 C# 代码,用于一个非常非常简单的 RogueLike 引擎。故意天真,因为我试图尽可能简单地做最少的事情。它所做的只是使用箭头键和 System.Console 在硬编码 map 周
我正在使用 Objective-C/Cocoa 开发一款 Roguelike 游戏,以了解更多信息。我已经掌握了大部分基本功能,但仍然有一个问题一直在试图解决。 以下是该过程的分割: 首先,加载 ma
我正在使用 libtcod 和 python 来制作 roguelike;我正在跟随的教程中,只有当您在怪物的视野中时,怪物才会跟随您。显然这是不够的;因为这意味着您可以转弯,而他们不会跟着您转弯。
我一直在考虑使用 Silverlight 构建基于 Web 的 Roguelike 游戏(或者可能只是使用 WPF 的桌面游戏)。 如果您不知道 Roguelike 是什么,它是一种图形角色扮演游戏,
我刚刚完成 this tutorial 的工作用于在 Python 中编写 Roguelike 程序,现在我非常依赖自己来确定去哪里以及下一步该做什么。 我的困境在于代码的困惑。我想将元素存储在某处,
Similar question found here 我正在开发一款用 Haskell 编写的 Roguelike 游戏。我决定使用 Data.Array.Repa 将世界表示为 2D 网格。 ,现
我是一名优秀的程序员,十分优秀!