На нашем сайте Вы сможете найти готовые курсовые и дипломные работы по программированию
Сейчас работаем

Игра Змейка. Shake. C++BUILDER6.0

о о о о о о о о о о о о о о о о о о о о о о о о о о о о о о  Популярная игра Змейка! о о о о о о о о о о о о о о о о о о о о о о о о о о о о о о о о о

Простой и удобный интерфейс дает возможность насладится всем известной игрой Змейка. В архиве есть исходники программы на с++ builder и скомпилированый ехе файл. Управление производится с помощью стрелочек на клавиатуре компьютера. Скачиваем и играем)))

Часть кода программы:

//автор(с): Бабченко Александр
#ifndef _UNICODE
#define _UNICODE
#endif
#ifndef UNICODE
#define UNICODE
#endif
#ifndef min
#define min(a, b)  (((a) < (b)) ? (a) : (b))
#endif
#ifndef max
#define max(a, b)  (((a) > (b)) ? (a) : (b))
#endif
#include <windows.h>
#include <stdio.h>
#include <time.h>
#ifdef __BORLANDC__
#pragma hdrstop
#pragma warn -8027
#endif
#include "console.h"
#include "controls.h"

#define GAME_CMD_START   0
#define GAME_CMD_HELP    1
#define GAME_CMD_QUIT    2

#define STATE_G_MENU     0
#define STATE_G_PLAY     1
#define STATE_G_HELP     2

#define DELAY_START      150UL
#define SNAKE_LENGTH     77
#define SNAKE_LEVELS     7




class Snake: public xConsole {
private:
	DWORD            score;
	DWORD            delay;
	WORD             level;
	WORD             state;
	WORD             key_ctrl;
	SMALL_RECT       frect;
	COORD            obj_pos;
	WORD             obj_inc;
	xField           field;
	xMsgBox          msgbox;

	xButtonGroup<3>  buttons;
	slist<COORD>     snake;
public:
	Snake(void);
	virtual ~Snake();
private:
	virtual void OnCreate(void);
	virtual void OnMouseMove(const COORD&);
	virtual void OnMouseDown(UINT, const COORD&);
	virtual void OnMouseUp(const COORD&);
//	virtual void OnMouseWheel(int);
//	virtual void OnMouseDblDown(UINT, const COORD&);
	virtual void OnKeyDown(WORD);
	virtual void OnKeyUp(WORD);
	virtual void OnProcess(void);
private:
	void draw_play(void);
	void generate_pos(void);
	bool is_self_intersect(void);
	void put_bonus(void);
	void show_help(void);
	void draw_victory(void);
	void draw_pause(void);
};



//-------------------------------------------------------------------------------------------------------



Snake::Snake():xConsole(), 
               score(0UL),
               delay(0UL),
               level(0),
               state(STATE_G_MENU), 
               key_ctrl(0){

}


Snake::~Snake(){
	snake.clear();
	msgbox.destroy();
}



//событие возникает создание консольного буфера или присваивание текущего
void  Snake::OnCreate(void){
	SetConsoleTitleW(L"Змейка");
	srand((unsigned int)time(NULL));

	//добавляем дополнительный буфер для игрового поля
	if(Add() == ERROR_SUCCESS){
		setActiveNoVisible(1);
		setBufferSize(Width(), Height() / 9);
        
		SMALL_RECT rc = getWindowSize();
		rc.Bottom = Height() - 1;
		setWindowSize(rc, TRUE);
       
		VisibleCaret(FALSE);
	}

	//рисуем меню игры
	setActiveNoVisible(0);
	setBufferSize(Width(), Height() / 11);
  
	SMALL_RECT rc = getWindowSize();
	rc.Bottom = Height() - 1;
	setWindowSize(rc, TRUE);
        
	VisibleCaret(FALSE);

	const WORD color = BACKGROUND_RED | BACKGROUND_BLUE;
	DrawRect(0, 0, Width(), 3, color);
	DrawRect(0, Height() - 4, Width(), Height(), color);

	const TCHAR str[] = TEXT("\4 \4 \4 ЗМЕЙКА \4 \4 \4");
	const int   len   = lstrlen(str);
	WriteText(str, len, (Width() - len) / 2, 2, color | FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_INTENSITY);

	buttons.set_parameter(this, 3);
	buttons.add(0, TEXT("НАЧАТЬ ИГРАТЬ"), (Width() - 32)/2, 5,  32, 4);
	buttons.add(1, TEXT("СПРАВКА ИГРЫ"),  (Width() - 32)/2, 11, 32, 4);
	buttons.add(2, TEXT("ВЫЙТИ ИЗ ИГРЫ"), (Width() - 32)/2, 17, 32, 4);

	const TCHAR hlp[] = TEXT("Для выбора пункта меню используйте мышку или клавиши клавиатуры");
	WriteText(hlp, lstrlen(hlp), 2, Height()-2, color | FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_INTENSITY);

	setAsyncLoop(TRUE);

	msgbox.create(this);

	setActiveNoVisible(1);
	setFixedHeight(Height() / 9);
	setActiveNoVisible(0);
	level = 0;
}



//событие движение мыши
void  Snake::OnMouseMove(const COORD& pos){
	switch(state){
	case STATE_G_MENU:
		buttons.mouse_move(pos);
		break;
	}
}



void  Snake::OnMouseDown(UINT but, const COORD& pos){
	switch(state){
	case STATE_G_MENU:
		buttons.mouse_down(but, pos);
		break;
	}
}



void  Snake::OnMouseUp(const COORD& pos){
	if(state == STATE_G_MENU){
		switch(buttons.mouse_up(pos)){
		case GAME_CMD_START:
			draw_play();
			break;
		case GAME_CMD_HELP:
			show_help();
			break;
		case GAME_CMD_QUIT:
			setAsyncLoop(FALSE);
			break;
		}
	}
}



//событие нажатие клавиши клавиатуры
void Snake::OnKeyDown(WORD key){
	switch(state){
	case STATE_G_MENU:
		buttons.key_down(key);  
		break;
	case STATE_G_PLAY:
		switch(key){
		case VK_LEFT:
		case 'A':
			key_ctrl = VK_LEFT;
			break;
		case VK_RIGHT:
		case 'D':
			key_ctrl = VK_RIGHT;
			break;
		case VK_UP:
		case 'W':
			key_ctrl = VK_UP;
			break;
		case VK_DOWN:
		case 'S':
			key_ctrl = VK_DOWN;
			break;
		case VK_ESCAPE: //выход
			setAsyncLoop(FALSE);
			break;
		case VK_SPACE: //пауза пробел
			MessageBeep(MB_ICONINFORMATION);
			draw_pause();
			break;
		}
		break;
	}
}



//событие отпускание клавиши клавиатуры
void Snake::OnKeyUp(WORD key){
	if(state == STATE_G_MENU){
		switch(buttons.key_up(key)){
		case GAME_CMD_START:
			draw_play();
			break;
		case GAME_CMD_HELP:
			show_help();
			break;
		case GAME_CMD_QUIT:
			setAsyncLoop(FALSE);
			break;
		}
	}
}

Купить 300,00 
Сразу после оплаты Вы получите работу на электронную почту. Файлы отправляются автоматически. Исходник программ Вы сможете отредактировать, как Вам нужно.
Комментарии (0)

alexfint32

/ /

Оставить комментарий

Ты не можешь комментировать

Только зарегистрированые пользователи имеют возможность комментировать работы
Похожие работы
Тип Название Рейтинг Категория Стоимость
Курсовая Игра змейка С++ OpenGL 0 C/C++ 2 500,00
Курсовая Игра Сокобан 6 .NET (C#) 2 200,00
Исходник Игра Шашки С# 10 .NET (C#) 2 500,00
Курсовая Игра 2048 С# new 2 .NET (C#) 2 500,00
Исходник Игра домино С++ 1 C/C++ 3 000,00
Другие работы автора
Тип Название Рейтинг Категория Стоимость
Исходник MP3 плеер. С++Builder 6.0 11 C/C++ 750,00
Статья Искуственный интелект. Анализатор цвета. С++BUILDER 6.0 8 C/C++ 1 000,00
Новые работы
Тип Название Рейтинг Категория Стоимость
Контрольная Театр (C#, WinForms, Access) new 0 .NET (C#) 1 500,00
Исходник Автошкола (C#, WPF, SQL Server, SQLite) new 0 .NET (C#) 2 500,00
Исходник Программа Парадокс дней рождения Python new 0 Python 700,00
Исходник ИС Налогоплательщики С# + SQL Server new 0 .NET (C#) 2 500,00
Исходник Логическая игра "Бейглз" Python new 0 Python 700,00
Купить

300,00 

Сразу после оплаты Вы получите работу на электронную почту. Файлы отправляются автоматически. Исходник программ Вы сможете отредактировать, как Вам нужно.

Заказать через

snake.rar
96521
Оцени работу

рейтинг

Категории
Игра Змейка. Shake. C++BUILDER6.0
Популярная игра Змейка. Исходники и скомпилированный *.exe файл.
Категория: Образование
Стоимость: 300,00