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

игра - Hangman - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ текст http://www.cyberforum.ru/cpp-beginners/thread430280.html
Задан произвольный текст. Слова в тексте могут разделяться одним или несколькими пробелами, знаками пунктуации и переходами на следующую строку. Каждое слово размещается в одной и той же строке...
C++ [C++] 24-битные BMP Программа не хочет кодировать 24-битные BMP. Под кодированием я понимаю разбитие изображение на квадраты по 10 пикселей (в программе - по 10 байтов, но это не особо существенно потому, что само... http://www.cyberforum.ru/cpp-beginners/thread430278.html
Практическая работа по классам C++
Построить систему классов для описания плоских геометрических фигур: круг, квадрат, треугольник. Предусмотреть методы для создания объектов, перемещение на плоскости, изменения размеров и вращения на...
C++ Сделать задачу на C++
Помогите сделать задачу? Задача на применение функций: Выступление спортсмена оценивают N арбитров (число N>=3!). Во избежание необъективности судейства высшую и низшую оценки отбрасывают и находят...
C++ Массив и функция http://www.cyberforum.ru/cpp-beginners/thread430255.html
Товарищи, если Вам не тяжело- помогите пожалуйста, собственно надо составить 2 программы в кротчайшие сроки, точнее- к завтрашнему дню. Прошу прощения, что в виде изображения, дело в том, что не знаю...
C++ перегрузка операторов Описать класс, реализующий указанный ниже тип данных. Класс должен содержать множество конструкторов для создания объектов определенного типа (конструктор по замачиванию и с параметрами, конструктор... подробнее

Показать сообщение отдельно
extremx
0 / 0 / 0
Регистрация: 14.12.2011
Сообщений: 11

игра - Hangman - C++

17.01.2012, 23:39. Просмотров 468. Ответов 0
Метки (Все метки)

Переделал программу но все еще много надо добовлять.
надо сделать что ввода букв происходило без 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();
    }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru