Код: Выделить всё
insToList(char heroName, int scores, rec *head);
Модератор: Apromix
Код: Выделить всё
insToList(char heroName, int scores, rec *head);
Феникс писал(а):Итак, теперь тестовая программа работает как надо.
А мне не понравилось. Указатели во все поля, списки непонятные. И, чтобы немного отвлечься от FOV, набросал свой вариант: пять функция-процедур, две из которых необязательны. Документация/аргументация следующая:Феникс писал(а):rec определён как
Код: Выделить всё
#define NAME_LENGTH 255
typedef struct
{
char name[NAME_LENGTH];
int score;
}
HS_Entry;
void HS_UseFile( const char* filename, unsigned int number_of_entries );
void HS_Clear();
void HS_Post( const char* name, int score );
int HS_Count();
HS_Entry HS_Get( int entry_index );
Код: Выделить всё
#include <stdlib.h> // for system() call
#include <iostream>
#include <string>
using namespace std;
#include "bearlibhs.h"
#define SCORE_TABLE_SIZE 10
int main()
{
HS_UseFile( "scores.txt", SCORE_TABLE_SIZE );
string name;
int score;
cout << "Enter a name: "; cin >> name;
cout << "Enter a score: "; cin >> score;
HS_Post( name.c_str(), score );
cout << endl << "Current score table:" << endl;
for ( int i=0; i<HS_Count(); i++ )
{
HS_Entry entry = HS_Get( i );
cout << i << ". " << entry.name << ": " << entry.score << endl;
}
system( "PAUSE" );
return 0;
}
Что это значит?void HS_Post( const char* name, int score )
Добавляет в таблицу новый рекорд -- или не добавляет, если score меньше наименьшего уже имеющегося в таблице.
В конце концов, никто не заставляет маяться этой дурьюP. S. И все же я солидарен с Jesus05. Таблица рекордов, инвентарь -- дурью маемся.
По-моему вы как-то странно трактуете динамичность таблицы рекордов. Переменная длина? Где хоть раз была таблица рекордов именно переменной длины -- сейчас пять элементов, завтра пятьсот, потом десять? Так или иначе будет отдельный экран, на котором будут выводиться списком рекорды, на этот экран влезет N записей. Так или иначе таблица через некоторое время заполняется и попасть в нее становится сложнее -- где это видано удалять записи из таблицы рекордов поодиночке? И, кстати, если уж очень хочется, можно указать number_of_entries скажем в тысячу -- неизвестно куда это выводить, но храниться будут тысяча записей, причем пустые все равно даже в файл не записываются.Феникс писал(а):По моему, таблица рекордов должна быть динамической.
Ну как есть -- если в таблицу размером три записи, в которой уже значится (A, 500), (B, 200) и (C, 100) попытаться HS_Post( "D", 50 ) то ничего занесено не будет, 50 же меньше, чем 100, в эту таблицу такая запись не влезает. И, повторюсь, даже если бы технически в таблице она сохранялась, число три наверное не просто так было выбрано -- на экране/окошке со списком рекордов, куда помещается только три строчки, этой новой записи все равно не было бы видно.Феникс писал(а):Что это значит?
Ога ]:->Феникс писал(а):В конце концов, никто не заставляет маяться этой дурью
С радостью бы посмотрел на работу с графикой (хотя бы тот же сдл/опенгл). На организацию графического интерфейса, создание окон и прочих элементов, работу со звуком, интересные решения по связке опрос клавиатуры/многооконный интерфейс, систему событий, таймеры, а системы очков/инвентарь - .. ну просто даже скучно вникать...И все же я солидарен с Jesus05. Таблица рекордов, инвентарь -- дурью маемся.
Как успехи с либойCfyz писал(а):Переменная длина? Где хоть раз была таблица рекордов именно переменной длины -- сейчас пять элементов, завтра пятьсот, потом десять? Так или иначе будет отдельный экран, на котором будут выводиться списком рекорды, на этот экран влезет N записей. Так или иначе таблица через некоторое время заполняется и попасть в нее становится сложнее -- где это видано удалять записи из таблицы рекордов поодиночке? И, кстати, если уж очень хочется, можно указать number_of_entries скажем в тысячу -- неизвестно куда это выводить, но храниться будут тысяча записей, причем пустые все равно даже в файл не записываются.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость