Игра Погоди Број

Један од најпознатијих класика међу компјутерским логичким игрицама, нарочито међу почетницима у програмирању компјутера, јесте логичка игра "Погоди број", где компјутер симулира једног од играча чији је задатак да замисли број који други играчи морају да погоде. На основу предложеног броја од стране играча, компјутер даје одговор да ли је замишљени број већи или мањи. Наравно број покушаја за погађање је ограничен. Игру "Погоди Број" можете преузети кликом на слику програма испод или на линк на дну стране. За исправан рад програма неопходан је Мајкрософтов .Нет фрејмворк 4.0 ( ^ ) !

Овај тип логичких игара спада у групу "Игре Погађања" код којих су играчи подељени у две групе, једна група има задатак да сакрије неку врсту информације (број, реч, наслов, локацију), а друга група мора ту информацију да открије на основу правила игре. Међу познатијим играма овог типа су "Пантомиме", "Потапање Подморница", "Вешала","Топло-Хладно","Мастермајнд". За више информација посетите ( ^ ).

/************************************************************************

* Program Licence : *

* *

* Copyright 2015 , Perić Željko *

* (periczeljkosmederevo@yahoo.com) *

* *

* According to it's main purpose , this program is licensed *

* under the therms of 'Free Software' licence agreement. *

* *

* If You do not know what those therms applies to *

* please read explanation at the following link : *

* (http://www.gnu.org/philosophy/free-sw.html.en) *

* *

* Since it is Free Software this program has no warranty of any kind. *

************************************************************************

* Ethical Notice : *

* *

* It is not ethical to change program code signed by it's author *

* and then to redistribute it under the same author name , *

* especially if it is incorrect. *

* *

* It is recommended that if You make improvement in program code , *

* to make remarks of it and then to sign it with Your own name , *

* for further redistribution as new major version of program. *

* *

* Author name and references of old program code version should be *

* kept , for tracking history of program development. *

* *

* For any further information please contact code author at his email. *

************************************************************************/

/************************************

* List Of Revisions *

************************************

* *

* *

* *

************************************/

/*****************************************************************************************************

* Program name : Погоди број *

* Program ver. : 1.0 *

* Created by : SharpDevelop *

* Code author : Перић Жељко *

* Code language : C# *

* Date created : 12.2.2015 *

* Time created : 20:16 *

* *

* *

* Program Description : Компјутер је замислио број између један и сто. *

* Твој задатак је да погодиш о ком броју је реч. *

* На располагању имаш десет покушаја. Срећно !!! *

* *

* *

* Све најбоље, *

* Аутор *

* *

*****************************************************************************************************/

using System;

using System.Text;

namespace Погоди_број

{

class Program

{

public static void Main(string[] args)

{

Console.OutputEncoding = new UTF8Encoding();

Console.Title = " Игра Погоди Број";

Console.SetWindowSize(53,35);

Console.SetBufferSize(53,35);

Console.BackgroundColor = ConsoleColor.Black;

Console.ForegroundColor = ConsoleColor.Green;

Console.CursorVisible = false;

Console.Clear();

Нова_Игра Започни = new Нова_Игра();

Започни.Погађање();

}

}

class Нова_Игра

{

public void Погађање()

{

Random случајан_број = new Random();

string одговор = string.Empty;

int број_покушаја = 0;

int замишљен_број = 0;

int изабран_број = 0;

int ред = 0;

int колона = 0;

bool погодак = false;

ConsoleKeyInfo тастер = new ConsoleKeyInfo('D',ConsoleKey.D,true,true,true);

while(тастер.Key == ConsoleKey.D)

{

Console.Clear();

Console.Write("*****************************************************");

Console.Write("* *");

Console.Write("* ИГРА ПОГОДИ БРОЈ *");

Console.Write("* *");

Console.Write("* Компјутер је замислио неки број од 1 до 99. *");

Console.Write("* Твој задатак је да погодиш који је то број. *");

Console.Write("* На располагању имаш десет покушаја. Срећно !!! *");

Console.Write("* *");

Console.Write("*****************************************************");

Console.WriteLine();

замишљен_број = случајан_број.Next(1,99);

погодак = false;

број_покушаја = 10;

while(број_покушаја>0 && !погодак)

{

Console.Write(" Који сам број замислио ? ");

ред = Console.CursorTop;

колона = Console.CursorLeft;

изабран_број = Учитај_Број(ред,колона);

Console.WriteLine();

if(изабран_број==замишљен_број)

{

погодак = true;;

}

if(изабран_број<замишљен_број)

{

одговор = Негативан_Одговор();

Console.WriteLine(одговор + "замишљени број је већи од " + изабран_број.ToString());

}

else if(изабран_број>замишљен_број)

{

одговор = Негативан_Одговор();

Console.WriteLine(одговор + "замишљени број је мањи од " + изабран_број.ToString());

}

број_покушаја--;

}

if(погодак)

Console.WriteLine("\n Браво, погодили сте замишљен број!");

else

Console.WriteLine("\n Нажалост овај пут нисте успели.\n Замишљени број је " + замишљен_број.ToString());

Console.WriteLine();

Console.Write(" Да ли желите поново да погађате [ Да / Не ] ? ");

тастер = Console.ReadKey(true);

}

}

private int Учитај_Број(int ред,int колона)

{

const string могући_бројеви="1234567890";

string реч=string.Empty;

string слово=string.Empty;

int дужина=0;

int број=0;

Console.SetCursorPosition(колона,ред);

Console.Write(" ");

Console.SetCursorPosition(колона,ред);

ConsoleKeyInfo тастер=new ConsoleKeyInfo();

while(тастер.Key!=ConsoleKey.Enter||дужина==0)

{

тастер=Console.ReadKey();

if(тастер.Key==ConsoleKey.Backspace||тастер.Key==ConsoleKey.Delete)

{

дужина--;

if(дужина<0)

{

дужина=0;

}

реч=реч.Substring(0,дужина);

Console.SetCursorPosition(колона,ред);

Console.Write(" ");

Console.SetCursorPosition(колона,ред);

Console.Write(реч);

}

else

{

слово=тастер.KeyChar.ToString();

if(могући_бројеви.Contains(слово))

{

дужина++;

if(дужина<3)

{

реч=реч+слово;

}

else

{

дужина=2;

Console.SetCursorPosition(колона,ред);

Console.Write(" ");

Console.SetCursorPosition(колона,ред);

Console.Write(реч);

}

}

else if(!могући_бројеви.Contains(слово))

{

Console.SetCursorPosition(колона,ред);

Console.Write(" ");

Console.SetCursorPosition(колона,ред);

Console.Write(реч);

}

}

}

број=int.Parse(реч.ToString());

return број;

}

private string Негативан_Одговор()

{

string Одговор = string.Empty;

Random Генератор = new Random();

int Избор = Генератор.Next(1,21);

switch(Избор)

{

case 1:Одговор = " Њет, ";

break;

case 2:Одговор = " Ма какви ";

break;

case 3:Одговор = " Близу сте, ";

break;

case 4:Одговор = " Замало погодак, ";

break;

case 5:Одговор = " Нопе, ";

break;

case 6:Одговор = " ..., ";

break;

case 7:Одговор = " Зев, ";

break;

case 8:Одговор = " Њенте, ";

break;

case 9:Одговор = " Јок, ";

break;

case 10:Одговор = " Хммм, ";

break;

case 11:Одговор = " Чек да размислим, ";

break;

case 12:Одговор = " Нихт, ";

break;

case 13:Одговор = " Икке, ";

break;

case 14:Одговор = " Јо, ";

break;

case 15:Одговор = " Бууу, ";

break;

case 16:Одговор = " Си, ";

break;

case 17:Одговор = " Опет није, ";

break;

case 18:Одговор = " Еi, ";

break;

case 19:Одговор = " Ора, ";

break;

case 20:Одговор = " Хладно, ";

break;

}

return Одговор;

}

}

}