Форум программистов, компьютерный форум CyberForum.ru

игра - Hangman - C++

Восстановить пароль Регистрация
 
extremx
0 / 0 / 0
Регистрация: 14.12.2011
Сообщений: 11
17.01.2012, 23:39     игра - Hangman #1
Переделал программу но все еще много надо добовлять.
надо сделать что ввода букв происходило без ENTER.
Надо, чтобы очки продолжались читатся,нарпимер, если игрок отгадает слово, игроку меньше 5 штрафных очков(не может быть негативный) и продолжается разгадка слов. там еще проблема с очков, надо чтобы за один правильний букв +1 и за не правильное -1. например 3 правильное это 3 очка и если следующий не правильний тогда за 1 меньше.
Еще, этот не такои важный но если кто-то знает как это сделать подскажите как - когда вводит 0 вместе вукв игра не продолжается.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
    #include <iostream>
    #include <iomanip>
    #include <string>
     
    using std::cin;
    using std::cout;
    using std::endl;
    using std::setw;
    using std::string;
    using namespace std;
     
    #include<conio.h>
    #include<stdlib.h>
    #include<stdio.h>
    #include<string.h>
     
    static void playGame();
    static void printMistakes( int n );
    static int const MAXGUESS = 8;
    static int const MAXLETTER = 'z' - 'a' +1;
    static char String[][15]= {"apple", "banana", "cat", "dog", "elephant", "fish", "giraffe", "hippopotamus", "ice cream","jelly", "kangaroo", "lion", "monkey", "noodles", "octopus", "parrot", "queen", "rabbit", "sun", "tree", "umbrella", "van", "window", "x-ray", "yellow", "zebra"};
     
    //{
    // enum{false, true} bool;
    //}
     
    int main()
    {
    bool again;
    char answer;
    //clrscr();
    cout << "\n\n\tThis is the word guessing game called Hangman.";
    cout << "\n\tThe computer will pick-up a word and you must try to";
    cout << "\n\tguess the lettrs in the word. If you guess the";
    cout << "\n\tword with less than" << MAXGUESS << "mistake, then you win the game!!!";
     
    do
    {
    playGame();
    cout << "\n\nWould you like to play another game?(Y or N)";
    cin >> answer;
     
    if ( answer == 'y' || answer == 'Y' )
    again = true;
    else if ( answer == 'n' || answer == 'N' )
    again = false;
    else
    {
    again = false;
    cout << "\n Your answer\"" << answer << "\"should be Y or N.";
    }
    }
    while (again);
    cout << "\nThank you for playing Hangman!";
    }
     
    static void playGame()
    {
    bool * already;
    char c;
    bool * display;
     
    int found;
    int i;
    char inputChar;
    char inputString[ 15 ];
    int length;
    int letters;
    int mistakes, score, chanscor;
    bool playing;
     
    char word[ 15 ];
    mistakes = 0;
    score = 0;
    //randomize();
     
    strcpy( word, String[ (int)(rand()%26) ] );
    length = strlen( word );
    display = new bool[ length ];
    letters = 0;
     
    for (i=0; i<length; i++ )
    {
    c=word[i];
    if ((c>='a')&&(c<='z'))
    {
    display[i]=false;
    letters++;
    }
    else
    display[i]=true;
    }
     
    cout<<"\n\nI am thinking of a word. ";
     
    if(letters==1)
    cout<<"the word has one letter.";
    else
    cout<<"the word has"<<letters<<"letters.";
    already= new bool[MAXLETTER];
     
    for ( i = 0; i < MAXLETTER; i++ )
    already[i] = false;
    playing = true;
     
    while(playing)
    {
    chanscor = 100 / ( MAXGUESS - mistakes );
    cout << "\nThe word is:";
     
    for ( i = 0; i < length; i++ )
    {
    cout << " ";
     
    if ( display[i] )
    cout << word[i];
    else
    cout << "*";
    }
     
    cout << "\nWhat is your guess? ";
     
    if (( MAXGUESS-mistakes ) - 1 )
    cout << "this is your last guess?";
    else
    cout << "you have" << ( MAXGUESS - mistakes ) << "guessing remaining.";
    gets( inputString );
    strlwr( inputString );
     
    if ( strlen(inputString) == length)
    {
    if( strcmp(word, inputString) == 0 )
    {
    cout<<"Yes the word is\""<<word<<"\"!";
    printMistakes(mistakes);
    playing=false;
    }
    else
    {
    cout<<"Sorry, the word is not\""<<inputString
    <<"\".";
    mistakes++;
    }
    }
    else if (strlen(inputString)!=1)
    {
    cout<<"Your guess\""<<inputString<<"\"must be one letter or the entire word.";
    }
    else
    {
    inputChar=inputString[0];
    if((inputChar<'a')||(inputChar>'z'))
    {
    cout<<"Your guess\""<<inputChar<<"\"must be a letter from A to Z, or the entire word.";
    }
    else if (already[inputChar-'a'])
    {
    cout<<"You have already guessed the following letters:";
     
    for(i=0; i<MAXLETTER; i++)
    cout<<" "<<(char)(i+'a');
    cout<<"\n";
    }
    else
    {
    already[inputChar-'a']= true;
    found=0;
     
    for (i=0; i<length; i++)
     
    if (word[i]==inputChar)
    {
    display[i]= true;
    found++;
    }
     
    if (found <= 0)
    {
    cout<<"Sorry, the letter\""<<inputChar<<"\"is not in the word.";
    mistakes++;
    }
    else
    {
    score=score+chanscor*(MAXGUESS-mistakes);
    cout<<"\n\t Your score now is"<<score<<endl;
     
    if (found==1)
    cout<<"there is one letter\""<<inputChar
    <<"\"in the word.";
    else
    cout<<"yes there are"<<found<<"letters\""<<inputChar<<"\"in the word.";
    playing= false;
    for(i=0; i< length; i++)
    playing = playing || !display[i];
    if (!playing)
    {
    cout<<"You found all the letters of the word\""<<word<<"\".";
    printMistakes(mistakes);
    }
    }
    }
    }
     
    if (mistakes>= MAXGUESS)
    {
    cout<<"the word was\"" << word << "\".";
    playing = false;
    }
    }
    }
     
    static void printMistakes(int n)
    {
    if (n<= 0)
    cout<<"You did not make any mistake. Excellent!";
    else if (n==1)
    cout<<"you made only one mistake. Great!";
    else
    cout<<"you made only"<<n<<"mistakes. Better luck next time!!!";
    getch();
    }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.01.2012, 23:39     игра - Hangman
Посмотрите здесь:

C++ Игра
Игра на С++ C++
C++ игра (с++)
C++ Игра на C++
C++ Игра на C++
C++ Игра
Игра C++
C++ Игра

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 06:08. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru