|
Основной форум Сюда все проблемы связанные с программированием. |
21.09.2008, 22:51
|
#1
|
AnyKey`щик
Регистрация: 15.08.2008
Адрес: Кемерово
Сообщений: 17
Написано 0 полезных сообщений (для 0 пользователей)
|
Запись в ресурс
Здравствуйте, интересует такой вопрос, есть ли функция записи в ресурс? Аналог readline только наоборот, writeline...ну вы меня поняли =).
__________________
Каждый человек имеет право на собственное мнение - при условии, что оно совпадает с нашим.
|
(Offline)
|
|
21.09.2008, 23:47
|
#2
|
ПроЭктировщик
Регистрация: 13.11.2006
Сообщений: 101
Написано 6 полезных сообщений (для 6 пользователей)
|
Ответ: Запись в ресурс
А каким раком оно сохраняться будет?
Препаковывать то джар никто не станет, он средствами телефона по идее изменяться не должен (а то бы вирусов писали все кому не лень).
Хотя оно конечно может в папке с сейвами сохраниться, но тут уже надо смотреть у каждого конкретного мобильника как оно реализовано.
Но это собственно уже так, лирические отступления.
В общем, пиши в файл.
|
(Offline)
|
|
22.09.2008, 15:10
|
#3
|
AnyKey`щик
Регистрация: 15.08.2008
Адрес: Кемерово
Сообщений: 17
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: Запись в ресурс
Сообщение от EVIL_USER
А каким раком оно сохраняться будет?
Препаковывать то джар никто не станет, он средствами телефона по идее изменяться не должен (а то бы вирусов писали все кому не лень).
Хотя оно конечно может в папке с сейвами сохраниться, но тут уже надо смотреть у каждого конкретного мобильника как оно реализовано.
Но это собственно уже так, лирические отступления.
В общем, пиши в файл.
|
Тоесть создавать файл в телефоне и в него писать? Не очень понял, я пытаюсь реализовать "Рекорды игры". Если можно то код напишите.
__________________
Каждый человек имеет право на собственное мнение - при условии, что оно совпадает с нашим.
|
(Offline)
|
|
22.09.2008, 15:45
|
#4
|
Элита
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений (для 1,833 пользователей)
|
Ответ: Запись в ресурс
Тогда тебе в rms надо писать. Либа есть. Но помочь не могу. Я её не юзал. Вообще ещё с rms не работал ни разу.
|
(Offline)
|
|
22.09.2008, 18:43
|
#5
|
Разработчик
Регистрация: 06.04.2008
Сообщений: 541
Написано 196 полезных сообщений (для 638 пользователей)
|
Ответ: Запись в ресурс
Вот как делал я:
Сначала в какой-нибудь процедуре типа init пишешь
ScrW:=GetWidth;
ScrH:=GetHeight;
scores_rs:=OpenRecordStore('scores');
//Если нет Highscores, то заполняем таблицу Романами
if GetRecordStoreSize(scores_rs)=0 then
begin
for i:=1 to 10 do h:=AddRecordStoreEntry(scores_rs,'Roman$'+IntegerToString((11-i)*5000));
end;
Процедура для записи нового рекорда:
procedure AddHighscore; //Запрос имени игрока для занесения в таблицу рекордов
var
i,place: integer;
scores: array[1..10] of integer;
TextId: integer;
ok: command;
begin
for i:=1 to 10 do scores[i]:=StringToInteger(Copy(ReadRecordStoreEntry(scores_rs,i),
Pos(ReadRecordStoreEntry(scores_rs,i),'$')+1,
Length(ReadRecordStoreEntry(scores_rs,i)))); //Считываем таблицу из Record store
if player1.score>scores[10] then //Если место выше 10-го
begin
ClearForm;
ShowForm;
SetFormTitle('Круто!');
TextId:=FormAddImage(LoadImage('/ThumbUp.png'));
TextId:=FormAddTextField('Введите ваше имя:','',5,TF_ANY);
ok:=CreateCommand('OK',CM_OK,1);
AddCommand(ok);
while GetClickedCommand<>ok do Delay(100);
for i:=10 downto 1 do if player1.score>scores[i] then place:=i; //Вычисляем занятое место
for i:=9 downto place do //Переносим часть таблицы вниз
ModifyRecordStoreEntry(scores_rs,ReadRecordStoreEntry(scores_rs,i),i+1);
//И вписываем имя игрока!
ModifyRecordStoreEntry(scores_rs,FormGetText(TextId)+'$'+IntegerToString(player1.score),place);
ShowCanvas;
end;
RemoveCommand(ok);
HighScores; //Показываем рекорды
end;
Процедура для считывания и отображения рекордов:
procedure Highscores; //Рекорды
var
i:integer;
WinX,WinY,WinW,WinH: integer; //Координаты "окна" рекордов
s: string;
back: command;
begin
Font(0);
WinW:=128;
WinH:=font32.TextHeight*10+6;
WinX:=(ScrW-WinW) div 2;
WinY:=(ScrH-WinH) div 2;
SetColor(200,200,0);
FillRect(0,0,ScrW,ScrH);
SetColor(200,200,200);
FillRoundRect(WinX,WinY,WinW,WinH,6,6);
SetColor(0,0,0);
DrawRoundRect(WinX,WinY,WinW,WinH,6,6);
for i:=1 to 10 do //Рисуем таблицу рекордов
begin
s:=ReadRecordStoreEntry(scores_rs,i);
font32.DrawString(IntegerToString(i)+'. '+Copy(s,0,Pos(s,'$')),
WinX+3,WinY+3+(i-1)*font32.TextHeight);
font32.DrawString(Copy(s,Pos(s,'$')+1,Length(s)),WinX+WinW-3-
font32.TextWidth(Copy(s,Pos(s,'$')+1,
Length(s))),WinY+3+(i-1)*font32.TextHeight);
end;
back:=CreateCommand('Back',CM_CANCEL,1);
AddCommand(back);
Repaint;
while GetClickedCommand<>back do Delay(100);
RemoveCommand(back);
Menu;
end;
Если здесь че непонятно, спрашивай.
|
(Offline)
|
|
22.09.2008, 21:27
|
#6
|
AnyKey`щик
Регистрация: 15.08.2008
Адрес: Кемерово
Сообщений: 17
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: Запись в ресурс
Спасибо большое, оставлю ето на дисерт, еще пробблемы бывают с основным циклом и процедурами, сейчас схематично попробую объяснить.
процедура лого
процедура новой игры
процедура рекордов
процедура помощи
процедура о разработчиках
процедура меню
бегин
процедура лого
процедура меню
енд;
я в каждой процедуре после завершения ее работы пишу вызов процедуры лого чтобы потом попасть в меню, не очень красиво, но днйствинно, проблема в том что я использую графическое меню (Menu32) И их функция selected после выбора например процедуры помощь всегда будет хранить в себе число 2, тоесть при входе в процедуру помощь, жмем назад запускается процедура лого, далее проверяется selected в нем стоит 2 и он запускает процедуру помощи...так бесконечно, как зачистить selected? или как вы работаете с основным циклом чтобы все грамотно было?
__________________
Каждый человек имеет право на собственное мнение - при условии, что оно совпадает с нашим.
|
(Offline)
|
|
22.09.2008, 21:55
|
#7
|
Разработчик
Регистрация: 06.04.2008
Сообщений: 541
Написано 196 полезных сообщений (для 638 пользователей)
|
Ответ: Запись в ресурс
|
(Offline)
|
|
23.09.2008, 06:15
|
#8
|
Мастер
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений (для 713 пользователей)
|
Ответ: Запись в ресурс
При инициализации Init. Переменная selected тут же обнуляется. На крайний случай есть процедура SetCursor. Так что нечего гнать на библиотеку. Там всё правильно. Это видимо ты selected хранишь в какой-то переменной и забываешь её сбрасывать при создании нового меню.
|
(Offline)
|
|
24.09.2008, 15:47
|
#9
|
AnyKey`щик
Регистрация: 15.08.2008
Адрес: Кемерово
Сообщений: 17
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: Запись в ресурс
Сообщение от odd
При инициализации Init. Переменная selected тут же обнуляется. На крайний случай есть процедура SetCursor. Так что нечего гнать на библиотеку. Там всё правильно. Это видимо ты selected хранишь в какой-то переменной и забываешь её сбрасывать при создании нового меню.
|
никакие переменные для етого не использовал, но то что игра сама начинается ето факт, причина может не в библиотеке, еще не понравилось в menu32 что значение в Selected заносится при наводе на пункт меню, а не при щелчке по нему, усложняет некоторые моменты.
__________________
Каждый человек имеет право на собственное мнение - при условии, что оно совпадает с нашим.
|
(Offline)
|
|
25.09.2008, 06:23
|
#10
|
Мастер
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений (для 713 пользователей)
|
Ответ: Запись в ресурс
А, ты про сенсорный экран говоришь... Ладно, я гляну в чем там дело...
Помнится кто-то заокеанский тоже на Lib_sensor жаловался...
|
(Offline)
|
|
25.09.2008, 20:40
|
#11
|
AnyKey`щик
Регистрация: 15.08.2008
Адрес: Кемерово
Сообщений: 17
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: Запись в ресурс
Причем тут сенсор, просто я поставил условие
repeat
until clicked=4
4 - ето пункт меню выход, решил протестить, просто навел на выход не нажимая и игра завершилась
__________________
Каждый человек имеет право на собственное мнение - при условии, что оно совпадает с нашим.
|
(Offline)
|
|
26.09.2008, 06:30
|
#12
|
Мастер
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений (для 713 пользователей)
|
Ответ: Запись в ресурс
Библиотека не опрешивает клаву. Это ты должен прописать сам.
Например, так:
repeat Delay(50); key:=KeyToAction(GetKeyClicked); if key=GA_FIRE then break; until false; s:=selected; if s=0 then .... if s=1 then .... if s=2 then ....
Последний раз редактировалось odd, 27.09.2008 в 06:18.
|
(Offline)
|
|
26.09.2008, 13:50
|
#13
|
ПроЭктировщик
Регистрация: 28.03.2007
Сообщений: 194
Написано 7 полезных сообщений (для 25 пользователей)
|
Re: Запись в ресурс
Юзай в репите одну процедуру, далее в цыкле вызывется другая процедура, после ее окончания снова в цикле срабатует автоматом первая процедура, и ненадо ее вызывать везде... немного фантазии
типа такого
Procedure puskrepeat;
Var i:integer;
Begin
exitpusk:=false;
Repeat
i:=puskmain(i);
until exitpusk;
end;
|
(Offline)
|
|
27.09.2008, 18:35
|
#14
|
AnyKey`щик
Регистрация: 15.08.2008
Адрес: Кемерово
Сообщений: 17
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: Re: Запись в ресурс
Сообщение от Kurdt
Юзай в репите одну процедуру, далее в цыкле вызывется другая процедура, после ее окончания снова в цикле срабатует автоматом первая процедура, и ненадо ее вызывать везде... немного фантазии
типа такого
Procedure puskrepeat;
Var i:integer;
Begin
exitpusk:=false;
Repeat
i:=puskmain(i);
until exitpusk;
end;
|
Как раз вот такой епанутый метод я и использовал, теперь предтавим
repeat
procedure logo
procedure menu
if 1=1 then procedure game
if 1=2 then procedure about
if 1=3 then procedure exit
procedure result
until
включаем игру видим лого, попадаем в меню, там выбираем например "Об игре" прочитали, выходим назад, а что сзади? Сзади по циклу идет result, посмотрели результат непонятного чего и иедм опять смотреть лого, меню, выбираем игру, играем и хотим выйти в меню...но меню нет по циклу, смотрим результат, лого и вот оно меню...посоветуйте что нить по продуманнее.
__________________
Каждый человек имеет право на собственное мнение - при условии, что оно совпадает с нашим.
|
(Offline)
|
|
27.09.2008, 18:53
|
#15
|
AnyKey`щик
Регистрация: 15.08.2008
Адрес: Кемерово
Сообщений: 17
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: Запись в ресурс
ну чтоб не создавать кучу тем и не превращать форум в помойку, лучше превращу в помойку ету тему.
Как можно свернуть приложение?
Как можно проверить сколько оперативки свободно?
Вообще как работать с железом, есть стандартные функции или какие то библиотеки?
__________________
Каждый человек имеет право на собственное мнение - при условии, что оно совпадает с нашим.
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 09:14.
|