Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [С] Топ 10 игроков в Тетрисе, есть тетрис,все работает,но надо добавит 
V
    Опции темы
Torrero
Дата 9.10.2007, 18:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 14.11.2006

Репутация: нет
Всего: нет



В общем есть работающий тетрис,все в порядке,но вот сказали что надо сделать топ 10 игроков:то есть он должен сохраняться в отдельном файле а потом когда игра заканчивается то должно сравниваться с даными из файла и вставляться в нужную строчку...надеюсь я понятно обьяснил...Вот ссылка на тетрис: http://slil.ru/24957258 (не волнуйтесь никаких архивов с червями и троянами,только один файл тетр.срр,12 кб)...Очень прошу вас мну помочь.Всем  спасибо заранее...

PM MAIL   Вверх
Torrero
Дата 11.10.2007, 19:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 14.11.2006

Репутация: нет
Всего: нет



А может хоть ктонибудь помочь,всмысле хотябы сказать алгоритм как все это сделать а то я понятия не имею как  это сделать... smile  
PM MAIL   Вверх
Mihhail
Дата 11.10.2007, 21:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 96
Регистрация: 13.9.2007

Репутация: 1
Всего: 9



Три функции для перечисленных задач:

Код

struct Rek{
   char Name[32];  //Имя игрока
   int  n;              //Его результат
};

//Глобальные переменные
Rek RekX[10];   //Десять лучших результатов
char Gamer[32];   //Имя текущего игрока
FILE *f;
int i;
//--------------------

//В начале программы считываем имеющиеся рекорды
void readrek(void)
{
   for( i = 0; i < 10; i ++ )
      memset( &RekX[i], 0, sizeof(Rek) );

   f = fopen( "Rekord.txt", "r" );
   if( !f ) return;

   for( i = 0; i < 10; i ++ )
      fread( &RekX[i], 1, sizeof(Rek), f );

   fclose( f );
}

//Запись рекордов в файл
void writerek(void)
{
   f = fopen( "Rekord.txt", "w" );

   for( i = 0; i < 10; i ++ )
      fwrite( &RekX[i], 1, sizeof(Rek), f );

   fclose( f );
}

//Проверка есть ли рекорд и вставка его в нужную позицию
void Rekord(int r) 
{
   char str[32];
   int t;

   for( i = 0; i < 10; i ++ )
      if( r > RekX[i].n ){
         t = RekX[i].n;
         RekX[i].n = r;
         r = t;
         strcpy( str, RekX[i].Name );
         strcpy( RekX[i].Name, Gamer );
         strcpy( Gamer, str );
         }
}

PM MAIL WWW   Вверх
Torrero
Дата 12.10.2007, 18:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 14.11.2006

Репутация: нет
Всего: нет



Народ помогите пожалуйста связать эти функции и этот тетрис,а то у мну нифига не получается,уже пол дня мучаюсь:(
PM MAIL   Вверх
Mihhail
Дата 12.10.2007, 20:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 96
Регистрация: 13.9.2007

Репутация: 1
Всего: 9



Вот изменённое начало программы, все остальные ф-ции без изменений:

Код


#include<bios.h>
#include<string.h>
#include<math.h>
#include<mem.h>
#include<stdio.h>
#include<stdlib.h>
#include<dos.h>
#include<time.h>
#include<conio.h>
#define DOWN 6
#define LEFT 7
#define RIGHT 8
#define BOOL unsigned int
#define TRUE 1
#define FALSE 0
#define KEY_DOWN 20480
#define KEY_RIGHT 19712
#define KEY_LEFT 19200
#define KEY_UP 18432
#define ESCAPE 283
#define SPASE 14624
#define ENTER 7181
#define REPAINT 9
#define P  6512
#define F1 15104
#define N_Y 20
#define N_X 10
BOOL CheckShifting(unsigned int);
void Screen(unsigned int);
BOOL NewFigura(int);
void NewGame(void);
void CopyBoxToGlass(void);
void GlassDraw(void);
BOOL CheckOverflow(void);
BOOL Control(void);
void Reverse(void);
int CheckTime(void);
void GlassCut(void);
void WindMessage(int, int, int, int, char*, int);
int Menu(void);

void Rekord(int);
void readrek(void);
void writerek(void);

//Глобальные переменные
struct Rek{
   char Name[32];  //Имя игрока
   int  n;         //Его результат
};

Rek RekX[10];
FILE *f;
char Gamer[32] = { "Gamer" }; //Имя текущего игрока
int i;

unsigned Shift_Y, Shift_X;
unsigned static Glass[N_Y][N_X], Box[4][4];
BOOL checkTimeStart=0;
time_t first;
double idleTime=0.5;
char key='y';
int Score;

void main(void)
{
readrek();  ////Считываем рекорды

//Спрашиваем имя
printf("Введите имя: ");
scanf("%s", Gamer );

clrscr();
textmode(C40);
_setcursortype(_NOCURSOR);
GlassDraw();
WindMessage(14, 2, 20, 6,"ScoreННННН", 2);
randomize();
NewFigura(2);
NewFigura(1);
while( Control() );

Rekord( Score );  ///Проверка результата на рекорд
writerek( );     ///Сохраняем рекорды

//Выводим результаты на экран
clrscr();
for(int i = 0; i < 10; i ++)
   printf( "%s : %d\n", RekX[i].Name, RekX[i].n );

clrscr();
textmode(C80);
textcolor(WHITE);
}

//////////////////////////////////////////////////////////////

//В начале программы считываем имеющиеся рекорды
void readrek(void)
{
   for( i = 0; i < 10; i ++ )
      memset( &RekX[i], 0, sizeof(Rek) );

   f = fopen( "Rekord.txt", "r" );
   if( !f ) return;

   for( i = 0; i < 10; i ++ )
      fread( &RekX[i], 1, sizeof(Rek), f );

   fclose( f );
}

//Запись рекордов в файл
void writerek(void)
{
   f = fopen( "Rekord.txt", "w" );

   for( i = 0; i < 10; i ++ )
      fwrite( &RekX[i], 1, sizeof(Rek), f );

   fclose( f );
}

//Проверка есть ли рекорд
void Rekord(int r)
{
   char str[32];
   int t;

   for( i = 0; i < 10; i ++ )
      if( r > RekX[i].n ){
         t = RekX[i].n;
         RekX[i].n = r;
         r = t;
         strcpy( str, RekX[i].Name );
         strcpy( RekX[i].Name, Gamer );
         strcpy( Gamer, str );
         }
}
/////////////////////////////////////////

PM MAIL WWW   Вверх
Torrero
Дата 13.10.2007, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 14.11.2006

Репутация: нет
Всего: нет



Цитата(Mihhail @ 12.10.2007,  20:24)
Вот изменённое начало программы, все остальные ф-ции без изменений:


Псип те большое,а то я не знал как правильно распечатать данные из файла...И кстати ты чуууучуть ошибся надо было вставить  тама чуть ниже в 2-х местахsmile.Короче еще раз пасиба...Вопрос думаю можно считать решенным 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0430 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.