我从阵列中处理卡片类型结构.
struct card deck[DECKSIZE]; //The deck is an array of cards structures
Run Code Online (Sandbox Code Playgroud)
我正在使用2D阵列.一组卡片类型结构的数组
struct card allHands[hands][cards];
Run Code Online (Sandbox Code Playgroud)
我使用此函数将deck和数组作为指针传递给数组的参数.我还改变了甲板指针的位置,以模拟在传递给玩家时丢失牌的牌组.
void dealHands(struct card *deck, struct card **handArray, int hands, int cards){
int players;
int cardCount;
int passCard = 0;
struct card * thisDeck;
thisDeck = deck;
for(players = 0; players < hands; players++){
for(cardCount = 0; cardCount < cards; cardCount++){
handArray[players][cardCount] = thisDeck[passCard];
passCard++;
}
}
deck = (deck + passCard);
}
Run Code Online (Sandbox Code Playgroud)
我用c编程了很长一段时间,所以我觉得这就是你做原型的方法吗?
void dealHands(struct card[], struct card*[], int, int);
Run Code Online (Sandbox Code Playgroud)
这就像我主要是如何实现这个功能的骨架.
int main(int …Run Code Online (Sandbox Code Playgroud) 这是一个prolog程序,它定义了命题逻辑的语法
所以我坚持试图找到其中X是Y的一个子公式我已经做了以下的谓词,但我有这个问题.不完全确定该怎么做.我知道我需要检查X和Y是否是公式,但我不明白下一步.
at(a). % Our first atom.
at(b). % Our second atom.
%fmla shows if it is a formula or not
fmla(X):- at(X). % an atom is a formula
fmla(neg(X)) :- fmla(X). % neg(F) is a formula if F is a formula
fmla(or(X,Y)) :- fmla(X), fmla(Y). % or(F,G) is a formula if F and G are formulas
fmla(and(X,Y)) :- fmla(X), fmla(Y). % and(F,G) is a formula if F and G are formulas
fmla(imp(X,Y)) :- fmla(neg(X)), fmla(Y). %imp is a formula …Run Code Online (Sandbox Code Playgroud) 我有一个具有类似命名变量的结构,例如
char c1;
char c2;
char c3;
char c4;
char c5;
char c6;
char c7;
char c8;
Run Code Online (Sandbox Code Playgroud)
我需要的是一个循环,将输入与每个输入进行比较.
//Something Like
for(int i = 1; i <= 8; i++) {
if(compared == foo->c(i)) {
return compared;
}
}
Run Code Online (Sandbox Code Playgroud)
现在我有一长串if和elses.不幸的是,我无法改变结构.如果if/elses的长字符串是最有效的方式(性能不是代码看起来有多好),那么我只是保持这样.
我基本上想要一个更改我当前正在比较的变量名称的循环,以使代码更少杂乱,并希望更快.
我正在制作一副纸牌.卡是结构
struct card{
char* suit;
char* face;
};
Run Code Online (Sandbox Code Playgroud)
而甲板上只是一组卡片结构.
for(s = 0; s < sizeof(SUITS); s++){
for(f = 0; f < sizeof(FACE); f++){
thisCard.suit = SUITS[s];
thisCard.face = FACE[f];
deck[cardNum]=thisCard;
cardNum++;
}
Run Code Online (Sandbox Code Playgroud)
套装和面部是具有所有套装和阵列的阵列
const char* SUITS[] = {"Spades", "Diamonds", "Clubs", "Hearts"};
const char* FACE[] = {"ACE", "ONE", "TWO", "THREE", "FOUR","FIVE",
"SIX", "SEVEN", "EIGHT", "NINE", "TEN", "JACK", "QUEEN", "KING"};
Run Code Online (Sandbox Code Playgroud)
然后我用这种格式的西装面打印出甲板
for(cardNum= 0; cardNum < DECKSIZE; cardNum++){
thisCard = deck[cardNum];
printf("%s of %s \n",thisCard.face,thisCard.suit);
}
Run Code Online (Sandbox Code Playgroud)
所以我在这里遇到很多问题.我不确定我制作阵列的方式是否有效.看来,当我这样做时,我不会穿着西装.我知道它编译了一个警告,因为我使用const字符串作为我的常规struct事物.但我不确定为什么它不能很好地工作.