getch();
return;
2.Åñëè ïðîèãðàë
case KONEC:
GotoXY(23,1); printf("Wu proigrali(xa-xa-xa!!!)\n\n\t\t\t");
break;
5.Èñõîäíûé òåêñò ïðîãðàììû Ñ++
Ðàçðàáîòêà ïðèëîæåíèÿ, ïðåäñòàâëÿþùåãî ñîáîé êîìïüþòåðíóþ èãðó «Çìåéêà».
#include <iostream> //ñòàíäàðòíàÿ áèáëèîòåêà
#include <time.h> //ñëó÷àéíûå ÷èñëà
#include <stdio.h> //äëÿ printf
#include <windows.h> // äëÿ HANDLE, êóðñîðà, öâåòà
#include <conio.h> //äëÿ kbhit
#include <math.h>
#include <io.h>
#include <iostream>
#include <fcntl.h>
#include <string.h>
#include "stdafx.h"
#include <math.h> // Îïèñàíèÿ ìàòåìàòè÷åñêèõ ôóíêöèé
#include <stdlib.h> // Îïèñàíèÿ ôóíêöèé malloc è free
using namespace std;
HANDLE hConsole;
//HANDLE hStdout, hStdin;
HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
void GotoXY(int X, int Y)
{
COORD coord = { X, Y };
SetConsoleCursorPosition(hStdOut, coord);
}
//Öâåò
enum ConsoleColor
Pink = 0,
Blue = 1,
Green = 2,
Cyan = 3,
Red = 4,
Magenta = 5,
Brown = 6,
LightGray = 7,
DarkGray = 8,
LightBlue = 9,
LightGreen = 10,
LightCyan = 11,
LightRed = 12,
LightMagenta = 13,
Yellow = 14,
White = 15
};
void SetColor(ConsoleColor text, ConsoleColor background)
text));
struct Zmeja // ñòðóêòóðà çìåéêà
COORD *t; //òî÷êè
int PCount; //êîëè÷åñòâî ÿáëîê
enum uprawlenie{LEFT,UP,RIGHT,DOWN}; //íàïðàâëåíèå çìåéêè
struct Game //äàíûå-òî÷íîñòè: çìåéêè, ÿáëîê, ïåðåäâèæåíèå ïî X è Y, çàäåðæêà, íàïðàâëåíèå
Zmeja gaduka; //çìåéêà
COORD jabloko; //ÿáëîêî
int dx,dy, //ïåðåäâèæåíèå
pause; //çàäåðæêà
int nap; //íàïðàâëåíèå
//Ôóíêöèÿ ðàçáðîñêè ÿáëîê
void PlusJabloko(Game &g)
int i,x,y;
int n = g.gaduka.PCount;
do
x = rand() % 56+3; //
y = rand() % 19+3; //êîðäèíàòû ÿáëîêà
for(i = 0; i < n; i++)
if(x == g.gaduka.t[i].X && y == g.gaduka.t[i].Y) // ïðîâåðêà ÷òîá ÿáëîêî íå áðîñèòü íà çìåþ
while(i < n);
g.jabloko.X = x; //
g.jabloko.Y = y; //çàïîìèíàåì ïîçèöèþ ÿáëîêà
SetConsoleCursorPosition(hConsole, g.jabloko); //ïåðåíîñèì êóðñîð â ýòó ïîçèöèþ
SetConsoleTextAttribute(hConsole,0x0c); //öâåò ÿáëîêà
printf("%c", 6); //ðèñóåì ÿáëîêî êàêèì õîòèì ñèìâîëîì
// Ôóíêöûÿ ñòàðòà çìåéêè åå êîîðäèíàò è ñêîðîñòè
void skorostGame(Game &g)
system("cls");
g.gaduka.PCount = 3; //ñêîëüêî òî÷åê â çìåéêè
g.gaduka.t = new COORD [3];//ñîçäàëè òî÷êè
for(int i = 0; i < 3; i++)
g.gaduka.t[i].X = 20 + i;
g.gaduka.t[i].Y = 20;
g.dx = 1;
g.dy = 0;
g.pause = 100;//ñêîðîñòü ïåðåäâèæåíèå çìåè
PlusJabloko(g);//ðèñóåì ÿáëîêà
void Level()
GotoXY(10,10);cout <<"Wu nikogda ne wuigraete "<<endl;
GotoXY(10,11);cout <<"eslu ne bydete bdutelnu!!!"<<endl;
void ZmejaStart()
GotoXY(10,15);cout <<"Soberite 75 Jablok "<<endl;
void STENA_2()
SetColor(LightBlue , Pink);GotoXY(20,0);cout << "Igra \"Zmejka\" Maiko Ekaterini" <<endl;
GotoXY(64,2);cout << "Danue:" << endl ;
GotoXY(64,3);cout << "Jablok:0" << endl ;
GotoXY(64,4); cout << "Dlina:3"<< endl;
GotoXY(64,5); cout << "Speed:0" << endl;
GotoXY(64,7); cout << "Uprawlenie:" << endl;
GotoXY(64,8); cout << "Esc:Wuxod" << endl;
GotoXY(64,9); cout << "P:Pause" << endl;
GotoXY(64,10); cout <<"S:Start" << endl;
GotoXY(64,11); cout <<"L:Level" << endl;
GotoXY(64,13);printf("%c",24);cout <<":Wwerx"<<endl;
GotoXY(64,14);printf("%c",25);cout<<":Wniz"<<endl;
GotoXY(64,15);printf("%c",27);cout<<":Wlewo"<<endl;
GotoXY(64,16);printf("%c",26);cout<<":Wprawo"<<endl;
SetColor(LightMagenta , Pink);
GotoXY(2,2);
int m = 0;
for(m = 0; m < 60; m++)
printf("*");
GotoXY(2,24);
for(m = 0; m < 60;m++)
GotoXY(2,3); cout << "*"<<endl;
GotoXY(2,4); cout << "*"<<endl;
GotoXY(2,5); cout << "*"<<endl;
GotoXY(2,6); cout << "*"<<endl;
GotoXY(2,7); cout << "*"<<endl;
GotoXY(2,8); cout << "*"<<endl;
GotoXY(2,9); cout << "*"<<endl;
GotoXY(2,10); cout << "*"<<endl;
GotoXY(2,11); cout << "*"<<endl;
GotoXY(2,12); cout << "*"<<endl;
GotoXY(2,13); cout << "*"<<endl;
GotoXY(2,14); cout << "*"<<endl;
GotoXY(2,15); cout << "*"<<endl;
GotoXY(2,16); cout << "*"<<endl;
GotoXY(2,17); cout << "*"<<endl;
GotoXY(2,18); cout << "*"<<endl;
GotoXY(2,19); cout << "*"<<endl;
GotoXY(2,20); cout << "*"<<endl;
GotoXY(2,21); cout << "*"<<endl;
GotoXY(2,22); cout << "*"<<endl;
GotoXY(2,23); cout << "*"<<endl;
GotoXY(61,3); cout << "*"<<endl;
GotoXY(61,4); cout << "*"<<endl;
GotoXY(61,5); cout << "*"<<endl;
GotoXY(61,6); cout << "*"<<endl;
GotoXY(61,7); cout << "*"<<endl;
GotoXY(61,8); cout << "*"<<endl;
GotoXY(61,9); cout << "*"<<endl;
GotoXY(61,10); cout << "*"<<endl;
GotoXY(61,11); cout << "*"<<endl;
GotoXY(61,12); cout << "*"<<endl;
GotoXY(61,13); cout << "*"<<endl;
GotoXY(61,14); cout << "*"<<endl;
GotoXY(61,15); cout << "*"<<endl;
GotoXY(61,16); cout << "*"<<endl;
GotoXY(61,17); cout << "*"<<endl;
GotoXY(61,18); cout << "*"<<endl;
GotoXY(61,19); cout << "*"<<endl;
GotoXY(61,20); cout << "*"<<endl;
GotoXY(61,21); cout << "*"<<endl;
GotoXY(61,22); cout << "*"<<endl;
GotoXY(61,23); cout << "*"<<endl;
//Ôóíêöèÿ êîòîðàÿ äâèãàåò è ðèñóåò
enum {KONEC, STENA, PLUS, MOVE};
int Move(Game &g)
int & n = g.gaduka.PCount;
COORD head = g.gaduka.t[n - 1]; //ãîëîâà
COORD tail = g.gaduka.t[0]; //õâîñò
COORD next;
next.X = head.X + g.dx;
next.Y = head.Y + g.dy; //ïðîâåðêà ñëåäóþùåé òî÷êè ïî íàïðàâëåíèþ
if(next.X < 3 || next.Y < 3 || next.X > 60 || next.Y > 23)//íå óïåðëàñü ëè â ñòåíó?
return STENA;
if(n > 4)
for(int i = 0; i < n; i++)
if(next.X == g.gaduka.t[i].X && next.Y == g.gaduka.t[i].Y) //íå íàåõàëè ëè íà ñåáÿ?
return KONEC;
if(next.X == g.jabloko.X && next.Y == g.jabloko.Y)
COORD*temp = new COORD[ ++n ]; //íîâûé ìàñèâ áîëüøèé íà 1
temp[i] = g.gaduka.t[i]; //ïåðåêîïèðóåì
temp[n - 1] = next; //äîáàâëÿåì îäíó
delete [] g.gaduka.t;
g.gaduka.t = temp;
SetConsoleCursorPosition(hConsole,head);
SetConsoleTextAttribute(hConsole, 0x0a); //çàêðàøûâàåì ÿáëîêî êîòîðîå ñåëè
SetConsoleCursorPosition(hConsole,next);
SetConsoleTextAttribute(hConsole,0x0a);
printf("%c",1);
PlusJabloko(g);
return PLUS;
for(int i = 0; i < n - 1; i++)
g.gaduka.t[i] = g.gaduka.t[i + 1];
g.gaduka.t[n - 1] = next;
SetConsoleCursorPosition(hConsole,tail);//çàêðàøèâàåì õâîñòèê
printf(" ");
SetConsoleTextAttribute(hConsole, 0x0a);//êðàñèì õâîñò çìåè â çåëåíèé öâåò
SetConsoleTextAttribute(hConsole,0x0f); //êðàñèì êóðñîð â áåëûé öâåò (ãîëîâó çìåè)
return MOVE;
void main()
hConsole = GetStdHandle(STD_OUTPUT_HANDLE); //ïîëó÷àåì äåñêðèïòîð êîíñîëè
int key = 0, count = 0;
bool Pause=false;
Game g;
skorostGame(g);
STENA_2();
srand(time(0));
bool pause = false;
while(key != 27)
while(!kbhit()) //æäåò ïîêà íàæìåì
if(Pause==true)
Sleep(1);
continue;
switch (Move(g))//äâèæåíèå
case PLUS:
++count;
g.pause-=1;
GotoXY(64,3); cout << "Jablok:" <<count << endl;
GotoXY(64,4); cout << "Dlina:" <<g.gaduka.PCount << endl;
GotoXY(64,5); cout << "Speed:" <<g.pause<< endl;
if (count == 75)
GotoXY(15,1); cout << "Wu wuigrali(maladec!!!)" << endl;
GotoXY(15,6);printf( "\n\t\t\t" );
GotoXY(15,7);printf( "\n\t\t\t" );
case STENA:
Sleep(g.pause); //Çàäåðæêà
key = getch();
if(key=='P'||key=='p')
Pause=!Pause;
else if(key=='S'||key=='s')
ZmejaStart();
else if(key=='L'||key=='l')
Level();
else if(key==0||key==224)
key=getch();
if(key == 72 && g.nap != DOWN)
g.nap = UP;
g.dx = 0;
g.dy = -1;
else if(key == 80 && g.nap != UP)
g.nap = DOWN;
g.dy = 1;
else if(key == 75 && g.nap != RIGHT)
g.nap = LEFT;
g.dx = -1;
else if(key == 77 && g.nap != LEFT)
g.nap = RIGHT;
5.Òåñòèðîâàíèå ïðîãðàììû.
Ïåðâîíà÷àëüíûé âèä èãðû ïðè çàïóñêå
Çìåéêà óäàðèëàñü îá îáúåêò ñòåíêó
Îáúåêò óäàðèëñÿ îá îáúåêò
Îêîí÷àíèå èãðû çìåéêà
7.Çàêëþ÷åíèå.
 êîäå çàäà÷è óêàçàíî ìàêñèìàëüíî äîïóñòèìîå êîëè÷åñòâî ÿáëîê, ïîýòîìó â èãðå ïðåäóñìîòðåíî äàííîå îãðàíè÷åíèå. Îãðàíè÷åíî êîëè÷åñòâî èãðîêîâ, îãðàíè÷åíî êîëè÷åñòâî ÿáëîê.
Ìîæíî äîáàâèòü îçâó÷èâàíèå ñîáûòèé èãðû, óðîâåíü ñëîæíîñòè èãðû è ðàçíûå íàñòðîéêè ïàðàìåòðîâ èãðû â êîäå ïðîãðàììû.Ýòî âûçâàëî áû áîëüøèé èíòåðåñ ê èãðå.
Èñïîëüçóåìàÿ â ïðîãðàììå ñòðóêòóðà ôàéëà íàèáîëåå îïòèìàëüíî ïîäõîäèò äëÿ òàêîãî ðîäà îïåðàöèé íàä ôàéëîì . Èíôîðìàöèÿ î èãðîêå,
óêàçûâàåòñÿ â ìåíþ ñïðàâà.
 öåëîì ïðèëîæåíèå ïðåäñòàâëÿåò ñîáîé ïî÷òè ñàìûé ïðîñòîé âàðèàíò èãðû «Çìåéêà » ñ íàáîðîì ñàìûõ íåîáõîäèìûõ ôóíêöèé.
8.Ñïèñîê ëèòåðàòóðû.
1. Íà÷àëüíûé êóðñ Ñ è Ñ++.: Ó÷åáíèê. /Á. È. Áåðåçèí. Ìîñêâà:"ÄÈÀËÎÃ-ÌÈÔÈ",1999ã. 2. ßçûê ïðîãðàììèðîâàíèÿ Ñ++. : Ó÷åáíèê. /. Ñòðàóñòðóï. Êèåâ:"ÄèàÑîôò", 1993 ã.
3. Ââåäåíèå â ÿçûê Ñ++: Ó÷åáíèê. / Áüÿðí Ñòðàóñòðàï.
– ÑÏá.: 1995.
4. Ñòðóêòóðû è àëãîðèòìû îáðàáîòêè äàííûõ: Ó÷åáíèê. / Ìàòüÿø Â.À., Ïóòèëîâ Â.À., Ôèëü÷àêîâ Â.Â. , Ù¸êèí Ñ.Â. - Àïàòèòû, ÊÔ Ïåòð ÃÓ, 2000
5. Ñ++ /Äýâèñ Ñòåôàí Ð.,4-å èçäàíèå : Ïåð. ñ àíãë.:- Ì.: Èçäàòåëüñêèé äîì «Âèëüÿìñ»,2003
6. Îñíîâû ïðîãðàììèðîâàíèÿ: Ó÷åá. Äëÿ ñðåä. ïðîô. îáðàçîâàíèÿ /È.Ã.Ñåìàêèí, À.Ï.Øåñòàêîâ. – Ì., 2006.
7. Ñ++ ýêñïðåññ êóðñ: Ó÷åáíèê. /Ëàïòåâ Â.Â. – ÑÏá.: ÁÕÂ- Ïåòåðáóðã 2004.
8. Ñ++ ó÷åáíûé êóðñ: Ó÷åáíèê. /Ôðàíêà Ï. – ÑÏá.: Ïèòåð 2005.
9. ÌÎÄÅËÈ È CÒÐÓÊÒÓÐÛ ÄÀÍÍÛÕ:/ Ó÷åáíîå ïîñîáèå/ Ä.Äàëåêà, À.Ñ. Äåðåâÿíêî, Î.Ã.Êðàâåö, Ë.Å. Òèìàíîâñêàÿ -Õàðüêîâ: ÕÃÏÓ, 2000
10.Âûñøàÿ ìàòåìàòèêà äëÿ ýêîíîìèñòîâ: ó÷åáíèê äëÿ ñòóäåíòîâ âóçîâ/Í.Ø.Êðåìåð,3-å èçäàíèå.-Ì.:ÞÍÈÒÈ-ÄÀÍÀ,2006
9.Ïðèëîæåíèÿ.
Ïðèëîæåíèå 1
Èçìåíåíèå îáúåêòà ÿáëîêî
Èçìåíåíèå îáúåêòà çìåéêà
Ìåíþ íà ðóññêîì ÿçûêå
Ïðèëîæåíèå 2
Ê êóðñîâîé ðàáîòå ïðèëàãàåòñÿ äèñê 1.44 Ìá.
Ñòðàíèöû: 1, 2, 3