Stora tråden för nybörjare inom programmering [objective-c]

Tråden skapades och har fått 3 svar. Det senaste inlägget skrevs .
1

Ja vi är säkert många som sitter i tankarna, fan vad coolt det vore om jag kunde göra ett eget program och få datorn att göra precis vad jag vill. Jag är i a f där och har i dagarna tagit mig an boken "Programming in Objective-C" på bara ett par dagar har jag fått i mig lite grundläggande kunskaper, det jag saknar är någon som kan kommentera min kod, så jag vet om jag är på rätt väg eller om jag övar in ett felbeteende.

Det finns säkert fler nybörjare som har frågor så vi kanske kan använda den här tråden till det, jag kommer iaf ha massor! Här är koden till ett spel jag börjat med.

Implementeringen av frågor vet jag är skitkass och ska inte göras på det sättet men det är mer av en "funktionstest" för övriga metoder eftersom jag ännu inte lärt mig hur jag ska läsa in och skapa nya objekt av klassen Questions. I övrigt är jag på rätt väg, är det såhär man gör objektorienterat? Och om någon vill så har jag svårt att greppa det här med -(int)sumOfTwoInteger t e x jag förstår att (int) där i början menas att metoden skall "return" en integer. Men var lägger sig integern som skapas av funktionen?

Mycket frågor! Och här kommer koden.

main.m

#import <Foundation/Foundation.h>#import "GameEngine.h"
int main(int argc, const char * argv[])
{


    @autoreleasepool {
        GameEngine *myGameEngine = [GameEngine new];
        
        NSLog(@"The players name is %@", [myGameEngine name]);
        NSLog(@"Alright welcome to my moviequotes game\n and actually my first ever real program! \n The idea is very simple. You will be presented  by 12 questions. Each question have four alternatives and only one answer is correct.");
        for (int n = 0; n <= 12; ++n) {
            [myGameEngine generateQuestionAndFillInQuestionDetails];
            [myGameEngine runQuestion];
        }
        [myGameEngine endGame];
    }
    return 0;
}

gameEngine.m

#import "GameEngine.h"#include <stdlib.h>


@implementation GameEngine


@synthesize name, randomQuestionNumber, question, questionAlternativeA, questionAlternativeB, questionAlternativeC, questionAlternativeD, rightAnswer, userAnswer, points, numberOfQuestionsRun;


-(void)runQuestion
{
    NSLog(@"\n %@",question);
    NSLog(@"\n 1. %@\n 2. %@ \n 3. %@ \n 4. %@",questionAlternativeA, questionAlternativeB, questionAlternativeC, questionAlternativeD);
    scanf("%i",&userAnswer);
    if (userAnswer == rightAnswer) {
        points +=1;
        NSLog(@"Congratulations you made the correct answer and scored 1 point!");
    } else {
        NSLog(@"I'm sorry you answered wrong, the correct answer was %i", rightAnswer);
    }
    
    numberOfQuestionsRun += 1;
}


-(void)endGame
{
    if (points > 9 ) {
        NSLog(@"Congratulations! Your score vas very good, you managed to scrape together %i points", points);
        
    } else if (points > 5 && points < 9){
            NSLog(@"Well It could have gone better, you only managed to scrape together %i", points);
    } else if (points < 5) {
        NSLog(@"Well that was terrible and movies surley isn't your cup of tea as we say! You only got %i points", points);
    }
}


-(void)generateQuestionAndFillInQuestionDetails
{
    randomQuestionNumber = arc4random() % 12;
    NSLog(@"Questionnumber is %i", randomQuestionNumber);
    
    if (randomQuestionNumber == 1) {
        self.question=(@May the force be with you);
        self.questionAlternativeA=(@Han Solo);
        self.questionAlternativeB=(@Tony Montana);
        self.questionAlternativeC=(@Edward Scissorhands);
        self.questionAlternativeD=(@Rudolf Andersson);
        self.rightAnswer = 1;
    } else if (randomQuestionNumber == 2) {
        self.question=(@I am the law);
        self.questionAlternativeA=(@Jack);
        self.questionAlternativeB=(@George Dredd);
        self.questionAlternativeC=(@Rose);
        self.questionAlternativeD=(@Obi Wan Kenobi);
        self.rightAnswer = 2;
        
    } else if (randomQuestionNumber == 3) {
        self.question=(@"What does Neo's computer tell him in the blockbuster The Matrix from 1999?");
        self.questionAlternativeA=(@"We're are you?");
        self.questionAlternativeB=(@Try to get som sleep);
        self.questionAlternativeC=(@I have a virus);
        self.questionAlternativeD=(@Wake up);
        self.rightAnswer = 4;
        
    } else if (randomQuestionNumber == 4) {
        self.question=(@"I AM THE LAW!");
        self.questionAlternativeA=(@GEORGE DREDD);
        self.questionAlternativeB=(@Tony Montana);
        self.questionAlternativeC=(@Edward Scissorhands);
        self.questionAlternativeD=(@Rudolf Andersson);
        self.rightAnswer = 1;
        
    } else if (randomQuestionNumber == 5) {
        self.question=(@"I AM THE LAW!");
        self.questionAlternativeA=(@GEORGE DREDD);
        self.questionAlternativeB=(@Tony Montana);
        self.questionAlternativeC=(@Edward Scissorhands);
        self.questionAlternativeD=(@Rudolf Andersson);
        self.rightAnswer = 1;
        
    } else if (randomQuestionNumber == 6) {
        self.question=(@"I AM THE LAW!");
        self.questionAlternativeA=(@GEORGE DREDD);
        self.questionAlternativeB=(@Tony Montana);
        self.questionAlternativeC=(@Edward Scissorhands);
        self.questionAlternativeD=(@Rudolf Andersson);
        self.rightAnswer = 1;
        
    } else if (randomQuestionNumber == 7) {
        self.question=(@"I AM THE LAW!");
        self.questionAlternativeA=(@GEORGE DREDD);
        self.questionAlternativeB=(@Tony Montana);
        self.questionAlternativeC=(@Edward Scissorhands);
        self.questionAlternativeD=(@Rudolf Andersson);
        self.rightAnswer = 1;
        
    } else if (randomQuestionNumber == 8) {
        self.question=(@"I AM THE LAW!");
        self.questionAlternativeA=(@GEORGE DREDD);
        self.questionAlternativeB=(@Tony Montana);
        self.questionAlternativeC=(@Edward Scissorhands);
        self.questionAlternativeD=(@Rudolf Andersson);
        self.rightAnswer = 1;
        
    } else if (randomQuestionNumber == 9) {
        self.question=(@"I AM THE LAW!");
        self.questionAlternativeA=(@GEORGE DREDD);
        self.questionAlternativeB=(@Tony Montana);
        self.questionAlternativeC=(@Edward Scissorhands);
        self.questionAlternativeD=(@Rudolf Andersson);
        self.rightAnswer = 1;
        
    } else if (randomQuestionNumber == 10) {
        self.question=(@"Who directed the first Indiana Jones movie?");
        self.questionAlternativeA=(@Hans Andersson);
        self.questionAlternativeB=(@Harry Zimmer);
        self.questionAlternativeC=(@George Lucas);
        self.questionAlternativeD=(@Steven Spielberg);
        self.rightAnswer = 3;
        
    } else if (randomQuestionNumber == 11) {
        self.question=(@"Go ahead, make my day");
        self.questionAlternativeA=(@American Pie);
        self.questionAlternativeB=(@Dirty Harry);
        self.questionAlternativeC=(@Terminator 2);
        self.questionAlternativeD=(@The Matrix);
        self.rightAnswer = 2;
        
    } else if (randomQuestionNumber == 12) {
        self.question=(@Youre gonna need a bigger boat);
        self.questionAlternativeA=(@The Boat that rocked);
        self.questionAlternativeB=(@"E.T");
        self.questionAlternativeC=(@Titanic);
        self.questionAlternativeD=(@Jaws);
        self.rightAnswer = 4;
        
    } 
}
@end

Jag har läst lite snabbt och titta på koden ännu snabbare... men var integern hamnar? I RAM-minnet.
Objektorientering är mer än att skapa objekt men det är en början.

Så nog är du på rätt väg alltid.

  • Skribent
  • Sollentuna
  • 2013-01-07 13:33
Ursprungligen av victorvictor:

Och om någon vill så har jag svårt att greppa det här med -(int)sumOfTwoInteger t e x jag förstår att (int) där i början menas att metoden skall "return" en integer. Men var lägger sig integern som skapas av funktionen?

Returvärdet försvinner om du inte använder det. Du använder det på samma sätt som du använder en vanlig integer. Exemplet nedan är i vanlig C, men principen är densamma för instansmetoder i Objective C.

int myFunction() {
    printf("Hello, world!\n");
    return 1;
}

int main() {
    int myVariable;
    myFunction(); // Funktionen körs och "Hello, World!" skrivs ut, men returvärdet används inte.
    myVariable = myFunction(); // "Hello, World!" skrivs ut, och myVariable tilldelas returvärdet av funktionen myFunction()

    if (myFunction() > 0) {   // Funktionen returnerar en integer, vilken jämförs med 0 och kastas bort. 
        printf("Större än 0!\n");
    }
    return 0; // Eftersom main() ska returnera en int... 
}

Sant jag var otydligt om dess förväntade levandslängd.

1
Bevaka tråden