Автор работы: Пользователь скрыл имя, 30 Марта 2015 в 07:42, курсовая работа
В данной курсовой работе мы рассмотрим основные принципы и возможности программной среды C++. Для этого используем основные операторы программирования: ветвления, ввода и вывода, цикличности и ввода библиотек, генерации случайных чисел.
При выполнении курсовой работы использовались теоретические и практические знания полученные на уроках информатики, которые применены при выполнения курсового проекта на примере реализации игровых программ в программной среде C++.
Введение
Введение в объектно-ориентированное программирование.
Интерфейс пользователя и Сценарии использования программы
Функциональные требования
Нефункциональные требования
Исключительные ситуации
Поэтапное описание создание кода игры
Заключение
Литература
Код программы в Приложение 6
Крестики нолики 4*4
Изменения с первоначальным вариантом выделены красным
Код программы в Приложение 7
8. Заключение
В процессе выполнения курсовой работы были освоены и закреплены навыки объектно-ориентированного программирования.
Игра разработана для широкого круга пользователей, не требует подготовки и дополнительных знаний. Достоинство игры состоит в том, что она не занимает много места и не требует много оперативной памяти. Программный продукт довольно прост в использовании и не нуждается в установке дополнительных программ.
Итак, несмотря на внешнюю простоту, программа представляет собой сложную систему взаимодействующих друг с другом функций. Потребовалось немало сил и времени на ее написание. Кроме того, потребовалось привлечение большого объема дополнительной информации. И все же может быть усовершенствован сам код программы, а также добавлены новые функции.
9. Приложение
Приложение 1
Код:
#include <iostream>
int get_move(){// функция которая и
будит рисовать доску
std::cout<<"Menu hodov: \n";//Меню Доска намирации клеток
std::cout<<"-7-|-8-|-9-" << std::endl;//Доска намирации клеток
std::cout<<"-4-|-5-|-6-" << std::endl;
std::cout<<"-1-|-2-|-3-" << std::endl;
std::cout<<"\n";//C помощью оператора \n пропускается одна строка
std::cout<< "Game board:" << std::endl;//Меню пустой доски
std::cout<<"---|---|---" << std::endl;//Пустая доска
std::cout<<"---|---|---" << std::endl;
std::cout<<"---|---|---" << std::endl;
std::cout<<" Vvod chisla ";
int move;// Что бы получить вход пользователя создаётся переменная move
std::cin >> move;//Просим что бы пользователь ввёл эту переменную (число)
while(move > 9 || move < 1){//Цикл while проверяет вход который дал пользователь больше 9 (move > 9) или (|| ) вход меньше 1 (move < 1 )
std::cout<<"Vvedite chislo ot 1 do 9:";//Если пользователь ввёл число меньше 1 и больше 9 то выводится на экран сообщение "Vvedite chislo ot 1 do 9:"
std::cin >> move;//Запрашиваем с помощью std::cin >> у пользователя другой вход move(ввод числа от 1 до 9)
}
return move;//Возвращаем оператором return значение “move”
}
int main(){
int move = get_move();//Вызывается функция
get_move()и помещается то что она вернет в переменную
std::cout << "the move you intereted is: " << move << std::endl;//Пишется с помощью std::cout<< в окне сообщение "the move you intereted is: "
return 0;
}
Приложение 2
КОД:
#include <iostream>
char board[9] = {'-', '-', '-', '-', '-', '-', '-', '-', '-'};//9 элементов ( '-') char, доски (board)
int get_move(){
std::cout<<"Menu hodov: \n";
std::cout<<"-7-|-8-|-9-" << std::endl;
std::cout<<"-4-|-5-|-6-" << std::endl;
std::cout<<"-1-|-2-|-3-" << std::endl;
std::cout<<"\n";
std::cout << "Game board:" << std::endl;
std::cout << "-"<<board[6]<<"-|-"<<board[7]
std::cout << "-"<<board[3]<<"-|-"<<board[4]
std::cout << "-"<<board[0]<<"-|-"<<board[1]
std::cout << "\nVvod chisla: ";
int move;
std::cin >> move;
while(move > 9 || move < 1 ||board[move-1] != '-' ){ // Добавляется ” ||board[move-1] != '-' “ т.е. board[move-1] (туда куда будит ставится знак) != (не равняется) '-' (пустышке)
std::cout<<"Vvedite chislo ot (1 do 9):\n";
std::cin >> move;
}
return move;
}
int main(){
for(int i=0; i<9; i++){//Пишется простой цикл для 9 ходов
int move = get_move();
std::cout << "the move you intereted is: " << move << std::endl;
if(i%2 == 0){//Если i по модулю 2 равняется 1, то это чётный ход,
board[move-1]='X';//то тогда задаётся значение ='X'
}
else{// Все остальные ходы будут нечётные,
board[move-1]='0';//то тогда задаётся значение ='О'
}
}
return 0;
}
Приложение 3
КОД:
#include <iostream>
char board[9] = {};// Остаётся пустой массив потому, что есть функция void clearboard()(почистить доску) которая очистит доску когда запустится main
void clearscreen(){// Очищает окно консоли, функция clearscreen ни чего не возвращает
for(int i = 0; i<100; i++){// Цикл for который отсчитывает от 0 до 100 и при каждом повторении цикла
std::cout<<std::endl;// цикла выводит на экран новую строчку
}
}
void clearboard(){//эта функция очищает доску и ни чего не возвращает
for(int i = 0; i<9; i++){// для этого заводится цикл for ( for(int i = 0; i<9; i++) ) который в цикле проходит по всем 9-и ячейкам на доске
board[i] = '-';// и board[i] поставит туда пустышку = '-‘
}
}
void print_board(){//В созданную функцию
std::cout << "-"<<board[6]<<"-|-"<<board[7]
std::cout << "-"<<board[3]<<"-|-"<<board[4]
std::cout << "-"<<board[0]<<"-|-"<<board[1]
}
int get_move(){
std::cout<<"\nMenu hodov: \n";
std::cout<<"-7-|-8-|-9-" << std::endl;
std::cout<<"-4-|-5-|-6-" << std::endl;
std::cout<<"-1-|-2-|-3-" << std::endl;
std::cout<<"\n";
print_board();//и заменяются эти выводы
print_board()
std::cout << "\nVvod chisla: ";
int move;
std::cin >> move;
while(move > 9 || move < 1 || board[move-1]!= '-'){
std::cout<<"Vvedite chislo ot (1 do 9):\n";
std::cin >> move;
}
return move;
}
int main(){
clearboard();// Это возвращает доску в своё изначальное состояние, для этого она устанавливается в начале main
for(int i=0; i<9; i++){
clearscreen();// функция clearscreen() в main ставится в цикл
int move = get_move();
std::cout << "the move you intereted is: " << move << std::endl;
if(i%2 == 0){
board[move-1]='x';
}
else{
board[move-1]='0';
}
}
std::cout << "the final board layout is: \n"// Прописывается вывод сообщения “the final board layout is:"
print_board();//Используется функция
чтобы ещё раз
return 0;
}
Приложение 4
КОД:
#include <iostream>
char board[9] = {};
void clearscreen(){// очищает окно консоли, функция clearscreen ни чего не возвращает.
for(int i = 0; i<100; i++){
std::cout<<std::endl;
}
}
void clearboard(){//эта функция очищает доску и ни чего не возвращает
for(int i = 0; i<9; i++){
board[i] = '-';
}
}
bool has_wonQ(char player){ //
int wins[8][3] {{0,1,2}, {3,4,5}, {6,7,8}, {0,3,6}, {1,4,7}, {2,5,8}, {0,4,8}, {2,4,6}};
for(int i = 0; i<8; i++){
int count =0;
for(int j = 0; j<3; j++){
if(board[wins][i][j]] == player)
count ++;
}
if(count = 3){
return true;
}
}
return false;
}
void print_board(){
std::cout << "Game board:" << std::endl;
std::cout << "-"<<board[6]<<"-|-"<<board[7]
std::cout << "-"<<board[3]<<"-|-"<<board[4]
std::cout << "-"<<board[0]<<"-|-"<<board[1]
}
int get_move(){
std::cout<<"\nMenu hodov: \n";
std::cout<<"-7-|-8-|-9-" << std::endl;
std::cout<<"-4-|-5-|-6-" << std::endl;
std::cout<<"-1-|-2-|-3-" << std::endl;
std::cout<<"\n";
print_board();
std::cout << "\nVvod chisla: ";
int move;
std::cin >> move;
while(move > 9 || move < 1 || board[move-1]!= '-'){
std::cout<<"Vvedite chislo ot (1 do 9):\n";
std::cin >> move;
}
return move;
}
int main(){
clearboard();
int turn = 0;
while(!has_wonQ('x') && !has_wonQ('0')){
clearscreen();
int move = get_move();
std::cout << "the move you intereted is: " << move << std::endl;
if(turn%2 == 0){
board[move-1]='x';
}
else{
board[move-1]='0';
}
turn++;
}
std::cout << "the final board layout is: \n";
print_board();
return
}
Приложение 5
#include <iostream>
char board[9] = {};
void clearscreen(){//Очищает окно консоли, функция clearscreen ни чего не возвращает
for(int i = 0; i<100; i++){
std::cout<<std::endl;
}
}
void clearboard(){//Функция очищает доску и ни чего не возвращает
for(int i = 0; i<9; i++){
board[i] = '-';
}
}
bool has_wonQ(char player){
int wins[][3] = {{0,1,2}, {3,4,5}, {6,7,8}, {0,3,6}, {1,4,7},
{2,5,8}, {0,4,8}, {2,4,6}};
for(int i = 0; i<8; i++){
int count = 0;
for(int j = 0; j<3; j++){
if(board[wins[i][j]] == player)
count++;
}
if(count == 3){
return true;
}
}
return false;
}
void print_board(std::string indent){
std::cout << "Game board:" << std::endl;
std::cout<<indent<<"-"<<board[
std::cout<<indent<<"-"<<board[
std::cout<<indent<<"-"<<board[
}
int get_move(){
std::cout<<"\nMenu hodov: \n";
std::cout<<"-7-|-8-|-9-" << std::endl;
std::cout<<"-4-|-5-|-6-" << std::endl;
std::cout<<"-1-|-2-|-3-" << std::endl;
std::cout<<"\n";
print_board(“”);
std::cout << "\nVvod chisla: ";
int move;
std::cin >> move;
while(move > 9 || move < 1 || board[move-1]!= '-'){
while(move > 9 || move < 1 board[move-1]!= '-' std::cout<<"Vvedite chislo ot (1 do 9):\n";
std::cin >> move;
}
return move;
}
char play_and_get_winner(){//
int turn = 1;
while(!has_wonQ('X') && !has_wonQ('0')){
clearscreen();
int move = get_move();// Ввод
std::cout << "the final board layout is: \n"; // Печатается вход
if(turn%2 == 1){// Выбор Х или О
board[move-1]='X';
if(has_wonQ('X')){
std::cout <<"X,Pozdravlyau vi vuigrali!\n";
return 'X';
}
else{
board[move-1]='0';
if(has_wonQ('0')){
std::cout <<"Y,Pozdravlyau vi vuigrali!\n";
return '0';
}
turn++;
if(turn == 10){
std::cout << "nechya\n";
return 'D';
}
}
}
int main(){
clearboard();
std::cout << "the final board layout is: \n";
char winner = play_and_get_winner();
print_board("\t ")
return
}
Приложение 6
КОД:
#include <iostream>
char board[9] = {};
void clearscreen(){//Очищает окно консоли, функция clearscreen ни чего не возвращает
for(int i = 0; i<100; i++){
std::cout<<std::endl;
}
}
void clearboard(){//эта функция очищает доску и ни чего не возвращает
for(int i = 0; i<9; i++){
board[i] = '-';
}
}
bool has_wonQ(char player){
int wins[][3] = {{0,1,2}, {3,4,5}, {6,7,8}, {0,3,6}, {1,4,7},
{2,5,8}, {0,4,8}, {2,4,6}};
for(int i = 0; i<8; i++){
int count = 0;
for(int j = 0; j<3; j++){
if(board[wins[i][j]] == player)
count++;
}
if(count == 3){
return true;
}
}
return false;
}
void print_board(std::string indent){
std::cout << "Game board:" << std::endl;
std::cout<<indent<<"-"<<board[
std::cout<<indent<<"-"<<board[
std::cout<<indent<<"-"<<board[
}
int get_move(){
std::cout<<"\nMenu hodov: \n";
std::cout<<"-7-|-8-|-9-" << std::endl;
std::cout<<"-4-|-5-|-6-" << std::endl;
std::cout<<"-1-|-2-|-3-" << std::endl;
std::cout<<"\n";
print_board(“”);
std::cout << "\nVvod chisla: ";
int move;
std::cin >> move;
while(move > 9 || move < 1 || board[move-1]!= '-'){
while(move > 9 || move < 1 board[move-1]!= '-' std::cout<<"Vvedite chislo ot (1 do 9):\n";
std::cin >> move;
}
return move;
}
char play_and_get_winner(){// Функция получить выигравшего
int turn = 1;
while(!has_wonQ('X') && !has_wonQ('0')){
clearscreen();
int move = get_move();// Ввод
std::cout << "the final board layout is: \n"; // Печатается вход
if(turn%2 == 1){// Выбор Х или О
board[move-1]='X';
if(has_wonQ('X')){
std::cout <<"X,Pozdravlyau vi vuigrali!\n";
return 'X';
}
else{
board[move-1]='0';
if(has_wonQ('0')){
std::cout <<"Y,Pozdravlyau vi vuigrali!\n";
return '0';
}
turn++;
if(turn == 10){
std::cout << "nechya\n";
return 'D';
}
}
}
int main(){
std::cout <<"Privetstvuyu\n\n";
std::string reply = "y";
while(reply == "y"){
clearboard();
//std::cout << "the final board layout is: \n";
char winner = play_and_get_winner();
print_board("\t ");
switch(winner){
case 'X':
x_wins++;
break;
case '0':
o_wins++;
break;
case 'D':
ties++;
break;
}
std::cout << "\n\t*Winer statistic*\nPlayer X: " << x_wins
<< ", Player 0: "<<o_wins << " and Ties: "<<ties<<"\n\n";