小编Riv*_*asa的帖子

如何遍历整数的数字?

可能重复:
将长固定数转换为数组Ruby

好吧,我必须遍历Ruby中的整数数字.现在我只是把它拆分成一个数组,然后迭代它.但是我想知道是否有更快的方法来做到这一点?

ruby integer loops

21
推荐指数
5
解决办法
3万
查看次数

指向数组的重点是什么?

所以,我正在阅读有关指针的内容,并且遇到了指向数组的指针.问题是指向数组的指针根本不是真的有用,因为我可以直接获取元素,而不是使用指针来获取数组元素的偏移量.但是我觉得好像我错过了这些可能有用的原因.

所以,简而言之,指向数组的重点是什么; 如何以及为什么要使用它们,它们是否有任何实际应用?

编辑:我的意思是在普通/简单数组的上下文中,例如:

int array[5];
Run Code Online (Sandbox Code Playgroud)

编辑:正如Keith指出的那样,我特别询问指向数组的指针,例如char (*ptr)[42]指向42个元素的char数组的指针.

c arrays pointers

9
推荐指数
3
解决办法
607
查看次数

如何删除C#中的某个子字符串

所以我在C#项目中有一些文件扩展名,如果它们在那里我需要从文件名中删除它们.

到目前为止,我知道我可以检查子字符串是否在文件名中.

if (stringValue.Contains(anotherStringValue))
{  
    // Do Something // 
}
Run Code Online (Sandbox Code Playgroud)

所以,如果说stringValuetest.asm,然后它包含.asm,我想以某种方式删除.asmstringValue.

我怎样才能做到这一点?

c# string substring

6
推荐指数
3
解决办法
1928
查看次数

如何使用构造函数在另一个类中创建一个对象?

所以我正在研究我的代码,它以模块化的方式设计.现在,我的一个班级; 被调用Splash必须创建另一个被调用的类的对象Emitter.通常你只需要创建对象并完成它,但这在这里不起作用,因为Emitter类有一个自定义构造函数.但是当我尝试创建一个对象时,它不起作用.

举个例子;

Emitter有一个像这样的构造函数:Emitter::Emitter(int x, int y, int amount);并且需要创建,以便可以在Splash类中访问它.

我试图这样做,但它不起作用:

class Splash{
    private:
        Emitter ps(100, 200, 400, "firstimage.png", "secondimage.png"); // Try to create object, doesn't work.
    public:
       // Other splash class functions.
}
Run Code Online (Sandbox Code Playgroud)

我也试过这个,但也没用:

class Splash{
    private:
        Emitter ps; // Try to create object, doesn't work.
    public:
       Splash() : ps(100, 200, 400, "firstimage.png", "secondimage.png")
       {};
}
Run Code Online (Sandbox Code Playgroud)

编辑:我知道第二种方式应该可行,但事实并非如此.如果我删除该Emitter部分,代码工作.但是当我第二种方式,没有窗口打开,没有应用程序执行.

那么如何创建我的Emitter对象Splash呢?

编辑:

这是我的发射器类和标头的代码: Header

// …
Run Code Online (Sandbox Code Playgroud)

c++ constructor class object

5
推荐指数
1
解决办法
5万
查看次数

如何在Cygwin和MinGW中告诉C++库路径

我在Windows XP上使用Cygwin安装开发C++程序.

我也安装了MinGW,因为我想使用它的g ++版本,而不是Cygwin附带的版本.

那部分似乎设置正确.当我开始Cygwin会话时,我看到了这个:

$ g ++
/cygdrive/c/MinGW/bin/g ++

这是正确的,g ++指向我的MinGW安装.

我不明白的是当我编写包含库代码的代码(例如,来自`Winsock/BerkleySockets API的头文件)时,如何判断编译器在哪里找到头文件?

例如,如果我#include "winsock.h"在我的代码中,编译器在哪里找到该头文件?

如果我在计算机上搜索winsock.h,我会得到:

C:\ MinGW \包括
C:\ cygwin\usr\include\w32api

两者都有winsock.h的副本(虽然这些文件大小不完全相同,所以它们不能相同).

谢谢您的帮助.

我还应该指出,我有C:\MinGW\bin我的Windows PATH环境变量,以及我/etc/profile file在Cygwin中配置的相同路径.

c++ compiler-construction cygwin mingw

5
推荐指数
1
解决办法
2万
查看次数

minimax递归究竟是如何工作的?

所以我正在寻找一个Tic-Tac-Toe游戏的Mini-max,但是无法理解递归是如何工作的?好的,基本上这里是我的问题:

  1. 极小极大如何知道轮到谁了?什么是最好的方式来表明轮到它生成的玩家?
  2. 你如何产生可能的动作?
  3. 您如何知道何时在终端节点,以及如何生成终端节点?

例如在这个伪代码中

function integer minimax(node, depth)
if node is a terminal node or depth <= 0:
    return the heuristic value of node
? = -?
for child in node: # evaluation is identical for both players
    ? = max(?, -minimax(child, depth-1))
return ?
Run Code Online (Sandbox Code Playgroud)

A node是一块板子吗?并且代码在递归中的深度是多少?还有什么max功能以及从哪里生成节点?

现在,到目前为止,我已经有了创建板的代码:

class Board{
    public:
        Board();
        ~Board(){};
    public: // The board
        // In the board, 1 is x, 2 is o, 0 is empty square.
        int board[3][3];
};
Run Code Online (Sandbox Code Playgroud)

但我怎么知道轮到谁了?我如何为电路板生成子节点?

c++ recursion concept minimax

4
推荐指数
1
解决办法
5845
查看次数

ncurses:奇怪的行格式

我有这个代码可以与 ncurses 一起使用:

#include <iostream>
#include <string>
#include <fstream>
#include <ncurses.h>
#include <cstdlib>

//char a='a';
int c=0;

bool ex = false;

void mva()
{
    std::cout << "Nothing here yet, move along." << std::endl;
}

void cho()
{
    std::cout << "Choose a valid option noob!" << std::endl;
}

void menu()
{
    std::cout << "Welcome." << std::endl;
    std::cout << "Choose an option" << std::endl;
    std::cout << "1." << std::endl;
    std::cout << "2." << std::endl;
    std::cout << "3." << std::endl;
    std::cout << "4. …
Run Code Online (Sandbox Code Playgroud)

c++ ncurses

4
推荐指数
1
解决办法
1952
查看次数

分层状态机涉及的原理是什么,以及如何实现基本模型?

因此,我尝试使用C ++进行游戏,并且阅读了很多有关有限状态机(FSM)分层状态机(HSM)的文章。但是,我将承认我阅读的大部分内容都有些密集且难以理解,因此我希望有人可以为我简化它。这是FSM还是HSM?

根据我想清除的内容:

  1. HSM与普通的FSM有何不同?为什么对游戏更好?

  2. 关于C ++,如何按照状态模式实现基本的HSM?(我可能对此不正确/使用错误的单词。)

  3. 您如何精确地处理过渡?我经常听到的on_exit和on_enter方法是什么?

  4. 我整个游戏需要一个HSM吗?(例如处理所有敌人,玩家动作,游戏菜单)还是我使用多个HSM?

  5. 在实现玩家实体时,它们是否都是实体状态的子集?

  6. 最后,如果有人可以提供一些伪代码来帮助可视化这些问题,我将不胜感激。

c++ implementation fsm hierarchical

3
推荐指数
1
解决办法
725
查看次数

如何将 Hook 和 Trampoline 函数合二为一以进行 WinAPI 挂钩

因此,我一直在学习挂钩和使用蹦床的概念,以便绕过/执行 WinAPI 挂钩函数中的数据(在不同的可执行文件中,使用 DLL 注入)。到目前为止,我知道如何使用汇编和 C 的混合来制作它(蹦床和钩子),但我似乎无法仅使用 C 来做到这一点,因为我似乎遗漏了一些东西。如果有人能告诉我我做错了什么以及如何解决它,我将不胜感激。

现在我的代码:

#include <Windows.h>

unsigned char* address = 0;

__declspec(naked) int __stdcall MessageBoxAHookTrampoline(HWND Window, char* Message, char* Title, int Type) {
    __asm
    {
        push ebp
        mov ebp, esp
        mov eax, address
        add eax, 5
        jmp eax
    }
}

int __stdcall MessageBoxAHook(HWND Window, char* Message, char* Title, int Type) {
    wchar_t* WMessage = L"Hooked!";
    wchar_t* WTitle = L"Success!";
    MessageBoxW(0, WMessage, WTitle, 0);
    return MessageBoxAHookTrampoline(Window, Message, Title, Type);
}

unsigned long __stdcall Thread(void* Context) …
Run Code Online (Sandbox Code Playgroud)

c assembly hook winapi trampolines

2
推荐指数
1
解决办法
3623
查看次数

用位运算符替换"!="

仅使用按位运算符(|, &, ~, ^, >>, <<),是否可以替换!=下面的?

// ...
if(a != b){
    // Some code
}
/// ...
Run Code Online (Sandbox Code Playgroud)

这主要是出于自身利益,因为我看到了如何做==而不是!=.

c binary bit-manipulation

1
推荐指数
1
解决办法
1210
查看次数