Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.12.2011, 18:23   #11
onewho
Форумчанин
 
Регистрация: 29.09.2010
Сообщений: 636
По умолчанию

Цитата:
а мне надо чтобы оно двигало к примеру '*' в одном направление постоянно, а не ждало нажатия клавиши, и чтобы когда была нажата клавиша, то реагировало.
Код:
while (1) {

// ...
if (kbhit()) { // была нажата клавиша.

i = getch();
switch (i) { // что за клавиша?
// ...
case ...
destination = UP; // изменим направление.
break; 
// ...

}

}

move(snake,destination); // изменим положение змейки.

}
onewho вне форума Ответить с цитированием
Старый 31.12.2011, 18:41   #12
asmars
Форумчанин
 
Аватар для asmars
 
Регистрация: 28.05.2011
Сообщений: 309
По умолчанию

Спасибо!
Я уже понял как это скодить, и уже нацарапал..
теперь другая проблема..

надо сейчас придумать ф-цию, которая рисует поле, и ф-цию которая раскидывает бобра рандомно по этому полю..
есть предложение сделать двухмерный динамический массив 20х20 и заполнить его '.' - то по чем будет питон ползать, и брать рандомно точку массива и выводить туда '8' - то что будет кушать питон..

но что то мне подсказывает что способ очень глупый, и КПД от него убыточный!
по сему прошу помочь с этим этапом..

вот, что имею..
Код:
//---------------------------------------------------------------------------

#include <vcl.h>
#include <iostream>
#include <conio.h>
#include <cstdio>
#include <stdlib.h>
#include <windows.h>

using namespace std;

#pragma hdrstop

//---define's--------
const int timepause=100; //Zaderjka na 100 mSec

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

//---1--Opredelyaet kakya knopka najata-----
void whatKeyPress (int &key)
{
        if(key==0){
        key=getch();
        switch(key){
                case 72:{cout<<"UP"<<endl; break;}
                case 80:{cout<<"DOWN"<<endl; break;}
                case 75:{cout<<"LEFT"<<endl; break;}
                case 77:{cout<<"RIGHT"<<endl; break;}
                default:{cout<<"any key"<<endl; break;}
                }
        }
}
//---1 end-----------------------------------



class oPol{
public:
void show(char &ch)
{
        cout<<"erer "<<ch<<endl;
}
};


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

#pragma argsused
void main()
{

        int i,j,a,k,s,key,ch;

        while(key!=27){
        Sleep(timepause);
        cout<<"1 ";
        if(kbhit()){
                key=getch();
                whatKeyPress(key);
                }
        }


        
        cout<<endl<<endl<<endl<<"Press any key ..."<<endl;
        getch();

}
//---------------------------------------------------------------------------
Спеши медленно.
asmars вне форума Ответить с цитированием
Старый 31.12.2011, 18:41   #13
asmars
Форумчанин
 
Аватар для asmars
 
Регистрация: 28.05.2011
Сообщений: 309
По умолчанию

Спасибо!
Я уже понял как это скодить, и уже нацарапал..
теперь другая проблема..

надо сейчас придумать ф-цию, которая рисует поле, и ф-цию которая раскидывает бобра рандомно по этому полю..
есть предложение сделать двухмерный динамический массив 20х20 и заполнить его '.' - то по чем будет питон ползать, и брать рандомно точку массива и выводить туда '8' - то что будет кушать питон..

но что то мне подсказывает что способ очень глупый, и КПД от него убыточный!
по сему прошу помочь с этим этапом..

вот, что имею..
Код:
//---------------------------------------------------------------------------

#include <vcl.h>
#include <iostream>
#include <conio.h>
#include <cstdio>
#include <stdlib.h>
#include <windows.h>

using namespace std;

#pragma hdrstop

//---define's--------
const int timepause=100; //Zaderjka na 100 mSec

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

//---1--Opredelyaet kakya knopka najata-----
void whatKeyPress (int &key)
{
        if(key==0){
        key=getch();
        switch(key){
                case 72:{cout<<"UP"<<endl; break;}
                case 80:{cout<<"DOWN"<<endl; break;}
                case 75:{cout<<"LEFT"<<endl; break;}
                case 77:{cout<<"RIGHT"<<endl; break;}
                default:{cout<<"any key"<<endl; break;}
                }
        }
}
//---1 end-----------------------------------

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

#pragma argsused
void main()
{

        int i,j,a,k,s,key,ch;

        while(key!=27){
        Sleep(timepause);
        cout<<"1 ";
        if(kbhit()){
                key=getch();
                whatKeyPress(key);
                }
        }


        
        cout<<endl<<endl<<endl<<"Press any key ..."<<endl;
        getch();

}
//---------------------------------------------------------------------------
Спеши медленно.

Последний раз редактировалось asmars; 31.12.2011 в 18:42. Причина: лишние удалю..
asmars вне форума Ответить с цитированием
Старый 31.12.2011, 18:50   #14
onewho
Форумчанин
 
Регистрация: 29.09.2010
Сообщений: 636
По умолчанию

да массив, разумеется, 2-мерный.

перерисовывать всё поле не советую. лагать будет.
придется вам использовать функции типа setconsolecursorpos чтоб затирать хвост.
onewho вне форума Ответить с цитированием
Старый 31.12.2011, 19:01   #15
asmars
Форумчанин
 
Аватар для asmars
 
Регистрация: 28.05.2011
Сообщений: 309
По умолчанию

а как с помощью классов и структур можно реализовать питона, бобра и само поле ?
думаю надо сделать класс ПОЛЕ, к которому будут привязаны все остальные..

с классами имею малый опыт, но хотелось бы улучшить его с помощью змейки, т.е. скодить змейку с помощью классов..
Спеши медленно.
asmars вне форума Ответить с цитированием
Старый 31.12.2011, 19:03   #16
asmars
Форумчанин
 
Аватар для asmars
 
Регистрация: 28.05.2011
Сообщений: 309
По умолчанию

onewho, вы предлагаете использовать ф-цию setConsoleCursorPos? но где ее применить ?
Спеши медленно.
asmars вне форума Ответить с цитированием
Старый 31.12.2011, 19:09   #17
onewho
Форумчанин
 
Регистрация: 29.09.2010
Сообщений: 636
По умолчанию

змейка сдвинулась -> хвост передвинулся.
ставим курсор на бывшую позицию хвоста и ее закрашиваем ' '.
onewho вне форума Ответить с цитированием
Старый 31.12.2011, 21:38   #18
asmars
Форумчанин
 
Аватар для asmars
 
Регистрация: 28.05.2011
Сообщений: 309
По умолчанию

Никак не могу понять как реализовать поле, бобра, и питона ...

Господа, помогите!
Спеши медленно.
asmars вне форума Ответить с цитированием
Старый 31.12.2011, 21:38   #19
asmars
Форумчанин
 
Аватар для asmars
 
Регистрация: 28.05.2011
Сообщений: 309
По умолчанию

Никак не могу понять как реализовать поле, бобра, и питона ...

Господа, помогите!
Спеши медленно.
asmars вне форума Ответить с цитированием
Старый 31.12.2011, 21:40   #20
sVasilich
Форумчанин
 
Аватар для sVasilich
 
Регистрация: 16.12.2009
Сообщений: 224
По умолчанию

Ты уверен что именно это интересует тебя 31го декабря в 8 часов вечера?))) Може лучше шампанского?))

Что хоть не получается? Что сделано уже? А то слишком абстрактно.
Люди бывают 10 типов: те, кто понимают двоичную систему счисления, и те, кто не понимают...
sVasilich вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Pascal движение змейки zhenka619 Помощь студентам 0 29.12.2011 22:45
Обработка нажатия клавиш в TButton mLight Помощь студентам 4 11.11.2011 20:53
Обработка клавиш на TListBox Melanholly Общие вопросы Delphi 2 31.10.2011 14:06
Обработка событий клавиш клавиатуры Synapse Visual C++ 2 20.10.2011 18:37
обработка нажатия клавиш VC++ консоль rest Помощь студентам 0 06.10.2009 07:53