gpt4 book ai didi

cocoa - 我非常感谢新 Cocoa 程序员的帮助

转载 作者:行者123 更新时间:2023-12-03 17:16:25 25 4
gpt4 key购买 nike

我正在为设计游戏的女儿制作一个简单的程序。我只是想让 Mac 给出一个从 1 到 6 的随机数,将其与用户的猜测进行比较,然后得到差值,该差值用于确定玩家可以在棋盘游戏中移动多少个空格。一切正常,除了程序生成的差值始终为 3。它正确生成随机数并正确读取用户的输入。这是代码。我真的很感激帮助。我对此很陌生,并且意识到可能有一个非常非常简单的答案。我一直在寻找,并没有找到解决方案。在某一时刻它可以正确地产生差异,但现在却不能了。非常感谢!

//
// AstroGuessAppDelegate.h
//
// Created by Trent Evans on 3/7/11.
// Copyright 2011 __MyCompanyName__. All rights reserved.
//

#import <Cocoa/Cocoa.h>

int macPick;
int numberGuess;
int numberDiff;

@interface AstroGuessAppDelegate : NSObject {
IBOutlet NSWindow *window;
IBOutlet id moveResultLabel;
IBOutlet id thinkingLabel;
IBOutlet NSComboBox *numberGuessBox;
}
- (IBAction)compareNumbersAndSendResults:(id)sender;
- (IBAction)macThinkOfNumber:(id)sender;
@end



//
// AstroGuessAppDelegate.m
//
// Created by Trent Evans on 3/7/11.
// Copyright 2011 __MyCompanyName__. All rights reserved.
//

#import "AstroGuessAppDelegate.h"

@implementation AstroGuessAppDelegate


- (IBAction)macThinkOfNumber:(id)sender {

macPick = (arc4random() % 6) + 1;
NSString *thinkingLabelText = [NSString stringWithFormat: @"Ok. I'm thinking of a number."];
[thinkingLabel setStringValue:thinkingLabelText];

}

- (IBAction)compareNumbersAndSendResults:(id)sender {

numberGuess = [numberGuessBox intValue];
numberDiff = macPick - numberGuess;
if (numberDiff<0) {
numberDiff = numberDiff * -1;
}
NSString *moveResultLabelText;
if (numberDiff=0) {
moveResultLabelText = [NSString stringWithFormat:@"My number was %i. Your number was %i. The difference is %i. \nBLAST OFF!\nMove forward 6 spaces", macPick, numberGuess, numberDiff];
}
if (numberDiff=1) {
moveResultLabelText = [NSString stringWithFormat:@"My number was %i. Your number was %i. The difference is %i. \nORBIT!\nMove forward 4 spaces", macPick, numberGuess, numberDiff];

}
if (numberDiff=2) {
moveResultLabelText = [NSString stringWithFormat:@"My number was %i. Your number was %i. The difference is %i. \nRE-ENTRY!\nMove forward 2 spaces", macPick, numberGuess, numberDiff];

}
if (numberDiff=3) {
moveResultLabelText = [NSString stringWithFormat:@"My number was %i. Your number was %i. The difference is %i. \nSPLASHDOWN!\nMove forward 1 space", macPick, numberGuess, numberDiff];

}
else {
moveResultLabelText = [NSString stringWithFormat:@"My number was %i. Your number was %i. The difference is %i. \nBLACK HOLE!\nSorry. You don't get to move.", macPick, numberGuess, numberDiff];

}


[moveResultLabel setStringValue:moveResultLabelText];

}


@end

最佳答案

在您的 if 语句中,您使用的是赋值运算符 = 而不是比较运算符 ==,因此每个 if 为 true,最后执行的是 3

为此,您最好使用switch:

switch(numberDiff)
{ case 0:
moveResultLabelText = [NSString stringWithFormat:@"My number was %i. Your number was %i. The difference is %i. \nBLAST OFF!\nMove forward 6 spaces", macPick, numberGuess, numberDiff];
break;
case 1:
etc.
default:
moveResultLabelText = [NSString stringWithFormat:@"My number was %i. Your number was %i. The difference is %i. \nBLACK HOLE!\nSorry. You don't get to move.", macPick, numberGuess, numberDiff];
}

接下来,您已将所有变量声明为顶部的文件全局变量:

int macPick;
int numberGuess;
int numberDiff;

如果这些在不同方法之间共享,那么它们应该是实例变量,在这种情况下,macPick 是一个实例变量。这应该在@interface中声明:

@interface AstroGuessAppDelegate : NSObject
{
int macPick;
etc.

看起来其他两个仅由 compareNumbersAndSendResults 使用,因此在那里声明它们:

- (IBAction)compareNumbersAndSendResults:(id)sender
{
int numberGuess;
int numberDiff;
etc.

有一个小的注释更改:

numberDiff = numberDiff * -1;

numberDiff = -numberDiff;

甚至使用abs函数:

numberDiff = abs(macPick - numberGuess);

关于cocoa - 我非常感谢新 Cocoa 程序员的帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5228928/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com