Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > C++ > Visual C++
Регистрация

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


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 19.12.2017, 15:35   #1
dato_cenario
Новичок
 
Регистрация: 19.12.2017
Сообщений: 2
Репутация: 10
По умолчанию tetris

помогите новичку (
пытался написать тетрис (пока что без какой-то логики ) запоролся на генераторе объектов

Код:
#include "stdafx.h"
#include "iostream"
#include "conio.h"
#include "time.h"


void draw();
void Logic();
int size ;
int set;
int *fx = new int[size];
int *fy = new int[size];

	

int wh , hh;


void object() {
	srand(time(NULL));
	size = rand () % 4 + 1;
	int *fx = new int[size];
	int *fy = new int[size];
	srand(time(NULL));
	fx[0] = rand () % hh - 4;
	fy[0] = 3 ;
	





	//object  - вот здесь запоролся 
	for (int k = 0; k <= size; k++) {
		switch (set) {
		case 0:

			fx[k] ++;
			fy[k] --;

		
			break;
		case 1:
			fx[k] = fx[k] + 1;
			fy[k] = fy[k] + 1;

		
			break;
		case 2:
			fx[k] ++;
			fy[k] ++;

			break;
		case 3:
			fx[k] = fx[k] + 1;
			fy[k] = fy[k] - 1;

		
			break;




		}

	};
	//object control
		if (_kbhit()) {
			switch (_getch())
			{
			case 'd':
				for (int r = 0; r <= size; r++) {
					fx[r] ++;

				};
				break;
			case 'a':
				for (int g = 0; g <= size; g++) {

					fx[g]--;
				};
				break;

			};
		};
	
	draw();
	
	};


	// construction of top border
void draw() {

	system("cls");
	for (int i = 0; i <= hh; i++) {
		std::cout << "x";
	};
	//constrction of right left borders
	for (int i = 0; i <= wh; i++) {
		for (int j = 0; j <= hh; j++) {
			if (j == 0 || j == hh) {
				std::cout << "x";
			};
			//figure construction
			if (i == fy[0] && j == fx[0] )  { std::cout << "0"; }
			else if (i == fy[1] && j == fx[1]  ) { std::cout << "0"; }
			else if (i == fy[2] && j == fx[2]  ) { std::cout << "0"; }
			else if (i == fy[3] && j == fx[3]  ) { std::cout << "0"; }
			 else	 { std::cout << " "; };
		};
		std::cout << std::endl;
	};

	//construction of bottom border
	for (int i = 0; i <= hh; i++) {
		std::cout << "x";
	};
	
//	system("pause");
	std::cout << fx[0] << fy[0] << size;
//	system("pause");
	object();

};

		

	


int main()
{
	std::cin >> wh;
	std::cin >> hh;
	while (true) { 
		draw ();
		logic();
	
	};



}


суть в том , что не работает object , меняет значение только size а массив координат не отрабатывается совсем
пытался уже и через if else ,видимо я не понимаю принципов работы циклов
хочу понять , как можно генерировать рандомные фигуры , подскажите плес)


_____
Код программы нужно выделять (форматировать) тегами [CODE] (читать FAQ)
Модератор

Последний раз редактировалось Serge_Bliznykov; 19.12.2017 в 15:41.
dato_cenario вне форума   Ответить с цитированием
Старый 19.12.2017, 15:54   #2
p51x
Профессионал
 
Регистрация: 15.02.2010
Сообщений: 14,681
Репутация: 2631
По умолчанию

1. Массивы нумеруются с 0, а значит по второй границе условие строгое.
2. Зачем вы два раза создаете массивы и ни разу не освобождаете их?
3. Массивы созданные в функции это не те, что глобальные и указатели на них потеряются с выходом из функции.
4. Массивы затираются 0 компилятором редко и в указанных случаях.
5. У вас циклический вызов draw - object - draw - object -
__________________
Запомните раз и навсегда: помочь != "решите за меня"!
p51x вне форума   Ответить с цитированием
Старый 29.12.2017, 22:54   #3
8Observer8
Профессионал
 
Регистрация: 02.01.2011
Сообщений: 3,238
Репутация: 915
По умолчанию

Из всех тетрисов, которые я находил, мне больше всего понравился этот:

https://www.youtube.com/watch?v=q1bHWvpMqtI
8Observer8 вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Tetris eppi Общие вопросы по Java, Java SE, Kotlin 0 10.10.2016 19:36
Tetris cantrewal Помощь студентам 3 06.02.2012 01:04
TETTOR - TETris construcTOR Alex Cones Софт 10 15.02.2010 22:01


07:07.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.