Пятница, 26 Апреля 2024, 04:05

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 2 из 6
  • «
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • »
Форум игроделов » Записи участника » Hagrael [105]
Результаты поиска
HagraelДата: Понедельник, 17 Января 2011, 12:43 | Сообщение # 21 | Тема: #if
почетный гость
Сейчас нет на сайте
Аналогичный результат. Пробовал и с setLocaleCP (или как там эта функция называется), тоже 0.

Добавлено (17.01.2011, 12:43)
---------------------------------------------
Я что-то так и не понял, что такое линкер. Это препроцессор что ли?


HagraelДата: Пятница, 14 Января 2011, 14:35 | Сообщение # 22 | Тема: #if
почетный гость
Сейчас нет на сайте
ezhickovich, пробовал и в Code::Blocks, и в Visual Studio. Результат одинаков - каракули. И у др. людей тоже каракули.

Добавлено (14.01.2011, 14:35)
---------------------------------------------

Code
#include <iostream>
using namespace std;
int main() {
  setlocale( LC_ALL, "Russian" );
     cout << "Привет!" << endl;
     cin.get();
     return 0;
}


HagraelДата: Пятница, 14 Января 2011, 14:25 | Сообщение # 23 | Тема: #if
почетный гость
Сейчас нет на сайте
ezhickovich, это не работает (да-да, я писал в функции main).

HagraelДата: Пятница, 14 Января 2011, 14:19 | Сообщение # 24 | Тема: #if
почетный гость
Сейчас нет на сайте
Quote (ezhickovich)
На все вопросы уже есть ответы... (угадай где...)

Даже не знаю...

Кст., вот проблемка - не выводится русский текст в консоли. Пытался и менять кодировку, и то, и сё, ничего не помогает. Не могли бы вы кинуть рабочий код просто вывода слова "Привет" на русском?


HagraelДата: Пятница, 14 Января 2011, 14:15 | Сообщение # 25 | Тема: #if
почетный гость
Сейчас нет на сайте
Quote (ezhickovich)
C++ Без страха

Щас посмотрим, что за вещь.

Добавлено (14.01.2011, 14:15)
---------------------------------------------
Кст., за книгу спасибо, интересно и просто написана. Но т. к. в ней написаны не все нюансы, за ними я буду приходить сюда =)


HagraelДата: Четверг, 13 Января 2011, 12:50 | Сообщение # 26 | Тема: #if
почетный гость
Сейчас нет на сайте
Quote (ezhickovich)
Hagrael, Хватит тупых вопросов, учи C++... (не надо начинать сразу с игр!)

Да я и учу "C++. От основ до игр". А можете кинуть ссылку на другой онлайн-учебник по C++? Я прогуглил всё, ничего не нашёл.
Quote (GECK)
void initGame(bool **map); //посылается указатель на map[0][0](сам массив). Фишка в том, что из него можно получить доступ к любому его элементу.

Но ведь при * должно посылаться значение, а не указатель. Ладно, почитаю статьи, попытаюсь понять.


HagraelДата: Среда, 12 Января 2011, 18:46 | Сообщение # 27 | Тема: #if
почетный гость
Сейчас нет на сайте
Я вот так понимаю:
Code
void initGame(bool **map); //в initGame посылаются значения указателей map'a о_О

bool **map = new bool*[20]; //значнеия указателей <img src="http://s12.ucoz.net/sm/1/wacko.gif" border="0" align="absmiddle" alt="wacko"> Ничё не понял

void initGame(bool **map) {...} // Здесь также принимаются ЗНАЧЕНИЯ указателей, а ведь должен на самом деле передаваться массив - сам указатель. Или нет?


HagraelДата: Среда, 12 Января 2011, 17:12 | Сообщение # 28 | Тема: #if
почетный гость
Сейчас нет на сайте
Не могу понять строки:
Code

void initGame(bool **map);

bool **map = new bool*[20];

void initGame(bool **map) {...}


HagraelДата: Среда, 12 Января 2011, 15:39 | Сообщение # 29 | Тема: #if
почетный гость
Сейчас нет на сайте
Matou, большое спасибо, понял, но 2 ** тогда что означают?

HagraelДата: Среда, 12 Января 2011, 15:30 | Сообщение # 30 | Тема: #if
почетный гость
Сейчас нет на сайте
Такс. Массив - это на самом деле указатель на первую ячейку, и когда мы пишем A[5], на самом деле выполняется операция *(A+5). А что здесь * делает? Извините, если туплю biggrin

HagraelДата: Среда, 12 Января 2011, 14:22 | Сообщение # 31 | Тема: #if
почетный гость
Сейчас нет на сайте
Хм... В общем при такой записи:
Code
int A[10];

в памяти создаётся массив, а в A заносится указатель на 0-ю ячейку. А как тогда осуществляется это:
Code
cout << A[5];


HagraelДата: Среда, 12 Января 2011, 13:41 | Сообщение # 32 | Тема: #if
почетный гость
Сейчас нет на сайте
Начал читать статью про указатели и ничего не понял. Любой массив - указатель на первый элемент массива... ?! То есть на самом деле массив указывает на 0-ю ячейку массива... А в ячейке этой что написано какому массиву она принадлежит? о_О

HagraelДата: Вторник, 11 Января 2011, 18:34 | Сообщение # 33 | Тема: #if
почетный гость
Сейчас нет на сайте
Kornival, а что вообще значит ** ? Сколько уровней у массива?

HagraelДата: Вторник, 11 Января 2011, 18:12 | Сообщение # 34 | Тема: #if
почетный гость
Сейчас нет на сайте
Kornival, не понял, что значит динамически? surprised

HagraelДата: Вторник, 11 Января 2011, 13:49 | Сообщение # 35 | Тема: #if
почетный гость
Сейчас нет на сайте
Quote (GECK)
Я так понял, что под инициализацией подразумевался порядок объявления.

Именно так =) А в коде я ступил - написал всё не совсем в том порядке, извините (это касается return). Я думал, что всё так:
Вначале все функции и классы заносятся в память, затем уже вызывается функция main и далее выполняется программа. Дело в том, что ранее я работал с JS, а в нём таких проблем нет, там хоть в конце кода напиши функцию, она будет а) инициализирована сразу б) если это функция a, и она вызывается из функции b, то если в момент её вызова из b она будет инициализирована, то всё будет good. А в C++ мне непонятно, почему функции, определённые раньше других не могут видеть эти "поздние" функции. И каким образом влияют прототипы не понял. Если объявишь прототип, то функция будет знать, что после неё объявлена другая, не объявишь - нет. о_О

Добавлено (11.01.2011, 13:48)
---------------------------------------------
Вот весь код:

Code
#include <iostream>
#include <stdlib.h>
#include <conio.h>

using namespace std;

void initGame(bool **map);

int main() {
  char act;
  int char_code, x=0, y=0;
  bool game_continues=true, map[20][15];

  initGame(map);

  while (game_continues) {
   for (int i=0; i<20; i++) {
    for (int j=0; j<15; j++) {
     if (map[i][j]==true) {cout << "P";} else {cout << " ";}
    }
    cout << "\n";
   }
   act=_getch();
   system("CLS");
   char_code=static_cast<int>(act);
   switch(char_code) {
    case 27:
     game_continues=false;
     break;
    case 75:
     if (x>0) {
      map[y][x]=false;
      x-=1;
      map[y][x]=true;
     }
     break;
    case 77:
     if (x<14) {
      map[y][x]=false;
      x+=1;
      map[y][x]=true;
     }
     break;
    case 72:
     if (y>0) {
      map[y][x]=false;
      y-=1;
      map[y][x]=true;
     }
     break;
    case 80:
     if (y<19) {
      map[y][x]=false;
      y+=1;
      map[y][x]=true;
     }
     break;
   }
  }

     return 0;
}

void initGame(bool **map) {
  for (int i=0; i<20; i++) {
   for (int j=0; j<15; j++) {
    map[i][j]=false;
   }
  }
  map[0][0]=true;
}

Говорит вот что:
\Code Blocks\game\main.cpp||In function `int main()':|
\Code Blocks\game\main.cpp|14|error: cannot convert `bool (*)[15]' to `bool**' for argument `1' to `void initGame(bool**)'

Добавлено (11.01.2011, 13:49)
---------------------------------------------
Я понял, что можно сразу flase'ами заполнить, но всё же, почему не работает данный код?


HagraelДата: Вторник, 11 Января 2011, 13:41 | Сообщение # 36 | Тема: Мотиваторы, или демотиваторы?
почетный гость
Сейчас нет на сайте
Эм... А это не одно и то же?)

HagraelДата: Понедельник, 10 Января 2011, 18:06 | Сообщение # 37 | Тема: #if
почетный гость
Сейчас нет на сайте
Kornival, понял =)
Что у меня не так? Компилятор выдаёт ошибку:
Code

int initGame(bool map[]);
int main() {
     return 0;
     bool map[20][15];
     initGame(map);
}
int initGame(bool map[15][20]) {
  for (int i=0; i<20; i++) {
   for (int j=0; j<15; j++) {
    map[i][j]=false;
   }
  }
  map[0][0]=true;
  return 0;
}

Вот ошибка:
\Code Blocks\game\main.cpp||In function `int main()':|
\Code Blocks\game\main.cpp|14|error: cannot convert `bool (*)[15]' to `bool*' for argument `1' to `int initGame(bool*)'


HagraelДата: Понедельник, 10 Января 2011, 17:39 | Сообщение # 38 | Тема: #if
почетный гость
Сейчас нет на сайте
ezhickovich, понятно, спасибо. Ну в общем, пока на этом зацикливаться думаю не стоит.

Добавлено (10.01.2011, 17:36)
---------------------------------------------
А вот ещё вопрос - в каком порядке инициализируются функции? То есть у меня 3 функции, first, main, second (расположены в том же порядке, в котором написаны), как действует программа? То есть она ведь вначале инициализирует все функции, а лишь после выполняет функцию main или нет? Если да, то зачем прототипы?

Добавлено (10.01.2011, 17:39)
---------------------------------------------
И зачем юзать статические переменные, если они всегда будут в памяти?


HagraelДата: Понедельник, 10 Января 2011, 16:16 | Сообщение # 39 | Тема: #if
почетный гость
Сейчас нет на сайте
ezhickovich, вот именно потому, что вы не поняли вопроса, вы и отправили меня на гугл =) Дело в том, что я не понимаю, каким образом <int> попадает в функцию? То есть я знаю такую операцию:
Code
class my_type {
     operator<int a> {
         cout << a;
     }
}

И то с <...> не проверял, так что не знаю, будет ли работать, но загвоздка ещё вот в чём - static_cast ведь не объект, так что к нему по идее такое нельзя прицепить. Или я ошибаюсь?


HagraelДата: Понедельник, 10 Января 2011, 13:44 | Сообщение # 40 | Тема: #if
почетный гость
Сейчас нет на сайте
Ещё 2 вопроса появились - каким образом работает такой вызов функции?
Code
static_cast<int>(var)

То есть каким макаром туда int в угловых скобках попадает? о_О
И ещё - в char может быть 1 байт, _getch возвращает char, и когда пишешь cout << _getch(), то выводится буква. Выходит, на одну букву расходуется 8 бит или как?


Форум игроделов » Записи участника » Hagrael [105]
  • Страница 2 из 6
  • «
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • »
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг