![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
CORS@R |
![]()
Сообщение
#1
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 37 Пол: Мужской Реальное имя: Рамиль Репутация: ![]() ![]() ![]() |
Задача такая: написать игру типа орел или решка, но с деньгами. Данные должны считываться из файла(а именно имя и деньги) и сохранятся в файл.
uses crt; Дело в том что инфа никак не может сохраниться(помогает только CTRL+BREAK), а сам файл все толстеет и толстеет. При просмотре все время пишет что список пуст Кто видел наверно еще не забыл |
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
под меткой View:
view: Аналогично при Save: { assign (f,'123.txt'); } { <--- Это совсем не обязятельно, переменная уже связяна с файлом } И мой тебе совет: во-первых, забудь вообще, что есть метки (и про Goto тоже забудь, ты пишешь не на Бейсике, а на Паскале !!!), а во-вторых, подумай о других - кириллицу переводи в Windows-кодировку. А то если я буду выкладывать файлы так, как удобно мне - поверь, ты мало что поймешь... |
CORS@R |
![]()
Сообщение
#3
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 37 Пол: Мужской Реальное имя: Рамиль Репутация: ![]() ![]() ![]() |
Точно про счетчик то я забыл. С goto вроде как то проще(в школе бейсик был). Есть маленький глюк при просмотре, но эта фигня щас поправим. С кодировкой больше так не буду. Thank you very much
|
CORS@R |
![]()
Сообщение
#4
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 37 Пол: Мужской Реальное имя: Рамиль Репутация: ![]() ![]() ![]() |
Есть маленький глюк при просмотре, но эта фигня щас поправим Блин глюк оказался не маленьким и не при просмотре а при сохранение: играю я значит и решил сохранить результат(Допустим имя qw, а деньги - 130). Сохранил. Нажимаю просмотр - все хорошо (qw 130). Дальше играю, опять сохраняю(имя as деньги 45), смотрю а там вместо qw 130 as 45 вот такое чудо qw 130 qw 45 as 45 Посмотри еще разок, а то я запарился уже ![]() |
volvo |
![]()
Сообщение
#5
|
Гость ![]() |
Переделай часть с Save и View вот так:
view: А в начале программы при чтении из файла - while (not eof(f)) do begin |
CORS@R |
![]()
Сообщение
#6
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 37 Пол: Мужской Реальное имя: Рамиль Репутация: ![]() ![]() ![]() |
Спасибо, все работает.
![]() |
CORS@R |
![]()
Сообщение
#7
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 37 Пол: Мужской Реальное имя: Рамиль Репутация: ![]() ![]() ![]() |
А как сделать так чтобы экзешник и файл 123.txt находились в любой папке ?
|
volvo |
![]()
Сообщение
#8
|
Гость ![]() |
Не указывай путь к TXT файлу явно. Напиши просто '123.txt' - тогда, если EXE и TXT будут в ОДНОЙ и той же папке, программа будет работать...
|
CORS@R |
![]()
Сообщение
#9
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 37 Пол: Мужской Реальное имя: Рамиль Репутация: ![]() ![]() ![]() |
Я так и делал, вылетало с какой-то ошибкой. Щас попробовал - работает. Наверное я сам виноват не тот экзешник наверное в папку к txt - файлу кидал
|
CORS@R |
![]()
Сообщение
#10
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 37 Пол: Мужской Реальное имя: Рамиль Репутация: ![]() ![]() ![]() |
Блин, хочется зашифровать данные в файле. Вроде как я понял можно сделать файл типизированным а не текстовым, но тогда вроде как нельзя пользоваться функцией append или я что-то не так понял
|
volvo |
![]()
Сообщение
#11
|
Гость ![]() |
Все правильно понял... Append работает только с текстовыми файлами... Можешь зашифровать простым XOR-ом: перед тем, как записать в файл строку - пройти по ней и сделать так:
XorKey := ... { тут - любое значение типа Byte } Теперь строка будет не в таком явном виде, как раньше... Для расшифровки - повторить ту же операцию с тем же XorKey, при повторном прогоне Xor восстанавливаются исходные значения... |
CORS@R |
![]()
Сообщение
#12
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 37 Пол: Мужской Реальное имя: Рамиль Репутация: ![]() ![]() ![]() |
С шифровкой понял, реализую потом. Есть маленькая проблема: при сохранение имя игрока сохраняется но потом при большом количестве раз сохранений этот список разрастается. Хочется сделать чтобы если при совпадение введенного имени и имени который уже в файле поле babki не заменялось новым значением sum а прибавлялось к старому. Вот я что-то наклепал но это что-то не пашет
save: Сообщение отредактировано: volvo - 2.11.2006 17:27 |
volvo |
![]()
Сообщение
#13
|
Гость ![]() |
![]() save:Идея понятна? Сообщение отредактировано: volvo - 2.11.2006 17:27 |
CORS@R |
![]()
Сообщение
#14
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 37 Пол: Мужской Реальное имя: Рамиль Репутация: ![]() ![]() ![]() |
че то не так...
Играю - сохраняю qw 77 играю - сохраняю as 88 играю - сохраняю zx 145 смотрю - все нормально потом играю, сумма 55, сохраняю как qw Должно быть qw 132 as 88 zx 145 но там zx 145 zx 145 zx 145 |
volvo |
![]()
Сообщение
#15
|
Гость ![]() |
Я подправил, проверь...
|
CORS@R |
![]()
Сообщение
#16
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 37 Пол: Мужской Реальное имя: Рамиль Репутация: ![]() ![]() ![]() |
Работает
![]() |
CORS@R |
![]()
Сообщение
#17
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 37 Пол: Мужской Реальное имя: Рамиль Репутация: ![]() ![]() ![]() |
Еще одна малюсенькая просьба: при просмотре имя игрока находится под надписью "ИГРОК" а значение денег располагается не под "ДЕНЬГИ" а в зависимости отдлины имени игрока. Хочется чтобы и значение денег находились строго под "ДЕНЬГИ". В Си это делается легко а в Паскале не знаю
|
volvo |
![]()
Сообщение
#18
|
Гость ![]() |
Цитата(CORS@R @ 5.02.2006 0:13) В Си это делается легко а в Паскале не знаю А в Паскале - еще легче: view: |
CORS@R |
![]()
Сообщение
#19
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 37 Пол: Мужской Реальное имя: Рамиль Репутация: ![]() ![]() ![]() |
Блин, че то я уже совсем туплю. Я делал так
view: И у меня все съезжало вправо. |
CORS@R |
![]()
Сообщение
#20
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 37 Пол: Мужской Реальное имя: Рамиль Репутация: ![]() ![]() ![]() |
volvo, смотри: Чтоб сразу нельзя было сохранять деньги я сначала сделал вот так
Код uses crt; const N=1000; label start1,save, view,view1, start, money, exit; type Dengi=record name:string[9]; babki:word; end; var b,flag:boolean; {<--- Обрати внимание} imya:string[15]; x,y,rez:byte; tmp:word; mas: array[1..N] of dengi; otv,otvet:char; i,j,sum,stavka,count:integer; f:text; begin {start1:} textbackground(1); textcolor(10); clrscr; start1:count:=0; assign(f,'123.txt'); reset(f); begin while (not eof(f)) do begin inc(count); readln(f,mas[count].name); readln(f,mas[count].babki); end; end; close(f); flag:=false; {<--} writeln; writeln(' ------------- -------- --------------- '); writeln(' |1-ЌЋ‚›‰ €ѓђЋЉ| |2-€ѓђЋЉ€| |3-‚›•Ћ„ €‡ €ѓђ›|'); writeln(' ------------- -------- --------------- '); writeln; otvet:=readkey; if otvet='1' then begin writeln; writeln(' Љ Є вҐЎп §®ўгв ?я'); writeln; readln(imya); end; if otvet='2' then goto view1; if otvet='3' then goto exit; randomize; sum:=100; writeln; writeln( ' Ћђ…‹ €‹€ ђ…˜ЉЂ '); while sum>0 do begin if sum>=1000 then begin writeln; writeln(' Њ®Ґ Є §Ё® ®Ў Єа®вЁ«®бм, в Є зв® Ё¤Ё Є вл ®вбо¤ Ї®Є п вҐЎп Ґ гЎЁ«'); writeln; delay(65000); delay(65000); delay(65000); delay(65000); delay(65000); delay(65000); delay(65000); goto save; end; start: writeln; writeln(' -------- --------- ---------- ------------------ ----------------- '); writeln('| 0-Ћђ…‹ | | 1-ђ…˜ЉЂ | | 2-€ѓђЋЉ€ | | 3-‡ЂЃђЂ’њ „…Ќњѓ€ | | 4-‚›•Ћ„ €‡ €ѓђ› | '); writeln(' -------- --------- ---------- ------------------ ----------------- '); writeln; otv:=readkey; if otv>'4' then begin writeln; writeln(' ” ⥡п ᮢᥬ Ї«®е® б® §аҐЁҐ¬ ? Ќ ЇЁб ® ¦Ґ: '); writeln; writeln(' -------- --------- ---------- ------------------ ----------------- '); writeln(' | 0-Ћђ…‹ | | 1-ђ…˜ЉЂ | | 2-€ѓђЋЉ€ | | 3-‡ЂЃђЂ’њ „…Ќњѓ€ | | 4-‚›•Ћ„ €‡ €ѓђ› | '); writeln(' -------- --------- ---------- ------------------ ----------------- '); writeln; writeln( ' Ђ ' ,otv,' п зв®-в® Ґ ўЁ¦г'); writeln('--------------------------------------------------------------------------------'); goto start; end; if otv='2' then goto view; if otv='3' then begin if not flag then {<--} goto save else begin writeln; writeln(' •®зҐим ¤ҐмЈЁ § Ўа вм? ЌҐ в Є Ўлбва®. —в®Ўл ¤ҐмЈЁ § Ўа вм Ёе 㦮 § а Ў®в вм!'); writeln; delay(65000); delay(65000); delay(65000); delay(65000); delay(65000); delay(65000); delay(65000); goto start; end; end; if otv='4' then goto exit; if otv='0' then begin x:=WhereX; y:=WhereY-1; gotoXY(x,y); writeln(' Ћђ…‹'); end; if otv='1' then begin x:=WhereX; y:=WhereY-1; gotoXY(x,y); writeln(' ђ…˜ЉЂ'); end; money: begin writeln; Writeln(' ” ⥡п ',sum,' агЎ«Ґ©. ‘Є®«мЄ® бв ўЁим?'); writeln; readln(stavka); if stavka>sum then begin writeln; writeln(' ’л зҐ бзЁв вм зв® «Ё Ґ 㬥Ґим, г вҐЎп Ґв в ЄЁе ¤ҐҐЈ!!!'); writeln('-----------------------------------------------------------------'); readln; goto money; end; rez:=random(2); if rez=1 then begin writeln; writeln(' ‚лЇ « ђ…˜ЉЂ'); end; if rez=0 then begin writeln; writeln(' ‚лЇ « Ћђ…‹'); end; tmp:=ord(otv)-48; if {tmp=otv} rez=tmp then begin writeln; writeln(' ”г и а '); sum:=sum+stavka; writeln; writeln(' ‘зҐв: ',sum); flag:=true; {<--} writeln('-----------------------------------------------------------------'); end else begin writeln; writeln( ' ”г б в ЄЁ¬ ЁЈа вм ¤ ¦Ґ Ґ ЁвҐаҐб®'); sum:=sum-stavka; writeln; writeln(' ‘зҐв: ',sum); flag:=true; {<--} writeln('------------------------------------------------------------------'); end; end; end; if sum<=0 then begin writeln; writeln(' ” вҐЎп § Є®зЁ«Ёбм Ў ЎЄЁ. Љ Є в®«мЄ® Ї®пўпвбп, § 室Ё'); delay(65000); delay(65000); delay(65000); delay(65000); delay(65000); delay(65000); delay(65000); goto exit; end; view: if count>0 then begin writeln; writeln(' -------------------------------------------'); writeln(' | €ѓђЋЉ':10, ' | „ҐмЈЁ':10,' |'); writeln(' |-------------------------------------------|'); end; if count>0 then begin i:=1; while i<=count do begin writeln(' | | |'); writeln(' | ',mas[i].name:10,' | ', mas[i].babki:10,' |'); writeln(' | | |'); inc(i); end; writeln(' -------------------------------------------'); end else writeln(' ‘ЇЁб®Є Їгбв'); delay(65000); delay(65000); delay(65000); delay(65000); delay(65000); goto start; view1: if count>0 then begin writeln; writeln(' -------------------------------------------'); writeln(' | €ѓђЋЉ':10, ' | „ҐмЈЁ':10,' |'); writeln(' |-------------------------------------------|'); end; if count>0 then begin i:=1; while i<=count do begin writeln(' | | |'); writeln(' | ',mas[i].name:10,' | ', mas[i].babki:10,' |'); writeln(' | | |'); inc(i); end; writeln(' -------------------------------------------'); end else writeln(' ‘ЇЁб®Є Їгбв'); goto start1; save: {writeln('Љ Є вҐЎп §®ўгв ?я'); readln(imya);} b := False; for i := 1 to count do begin if imya = mas[i].name then begin inc(mas[i].babki, sum); rewrite(f); for j := 1 to count do begin writeln(f, mas[j].name); writeln(f, mas[j].babki); end; close(f); WRITELN; writeln('Џа®©¤Ё ў Є ббг, в ¬ ⥡Ґ ўл¤ ¤гв вў®Ё зҐбв®§ а Ў®в лҐ ¤ҐмЈЁ'); WRITELN; delay(65000); delay(65000); delay(65000); delay(65000); delay(65000); delay(65000); delay(65000); b := true; break; end; end; if not b then if count<N then begin inc(count); mas[count].name:=imya; mas[count].babki:=sum; append(f); writeln(f,mas[count].name); writeln(f,mas[count].babki); close(f); writeln; writeln('Џа®©¤Ё ў Є ббг, в ¬ ⥡Ґ ўл¤ ¤гв вў®Ё зҐбв®§ а Ў®в лҐ ¤ҐмЈЁ '); writeln; delay(65000); delay(65000); delay(65000); delay(65000); delay(65000); delay(65000); delay(65000); end else writeln('Нет места '); goto start1; exit: end. Но так не работает. Кодировку не менял - она здесь не нужна. Потом сделал так Код uses crt; const N=1000; label start1,save, view,view1, start, money, exit; type Dengi=record name:string[9]; babki:word; end; var b:boolean; imya:string[15]; x,y,rez,flag:byte; {<--- Теперь flag byte} tmp:word; mas: array[1..N] of dengi; otv,otvet:char; i,j,sum,stavka,count:integer; f:text; begin {start1:} textbackground(1); textcolor(10); clrscr; start1:count:=0; assign(f,'123.txt'); reset(f); begin while (not eof(f)) do begin inc(count); readln(f,mas[count].name); readln(f,mas[count].babki); end; end; close(f); flag:=0; {<--} writeln; writeln(' ------------- -------- --------------- '); writeln(' |1-ЌЋ‚›‰ €ѓђЋЉ| |2-€ѓђЋЉ€| |3-‚›•Ћ„ €‡ €ѓђ›|'); writeln(' ------------- -------- --------------- '); writeln; otvet:=readkey; if otvet='1' then begin writeln; writeln(' Љ Є вҐЎп §®ўгв ?я'); writeln; readln(imya); end; if otvet='2' then goto view1; if otvet='3' then goto exit; randomize; sum:=100; writeln; writeln( ' Ћђ…‹ €‹€ ђ…˜ЉЂ '); while sum>0 do begin if sum>=1000 then begin writeln; writeln(' Њ®Ґ Є §Ё® ®Ў Єа®вЁ«®бм, в Є зв® Ё¤Ё Є вл ®вбо¤ Ї®Є п вҐЎп Ґ гЎЁ«'); writeln; delay(65000); delay(65000); delay(65000); delay(65000); delay(65000); delay(65000); delay(65000); goto save; end; start: writeln; writeln(' -------- --------- ---------- ------------------ ----------------- '); writeln('| 0-Ћђ…‹ | | 1-ђ…˜ЉЂ | | 2-€ѓђЋЉ€ | | 3-‡ЂЃђЂ’њ „…Ќњѓ€ | | 4-‚›•Ћ„ €‡ €ѓђ› | '); writeln(' -------- --------- ---------- ------------------ ----------------- '); writeln; otv:=readkey; if otv>'4' then begin writeln; writeln(' ” ⥡п ᮢᥬ Ї«®е® б® §аҐЁҐ¬ ? Ќ ЇЁб ® ¦Ґ: '); writeln; writeln(' -------- --------- ---------- ------------------ ----------------- '); writeln(' | 0-Ћђ…‹ | | 1-ђ…˜ЉЂ | | 2-€ѓђЋЉ€ | | 3-‡ЂЃђЂ’њ „…Ќњѓ€ | | 4-‚›•Ћ„ €‡ €ѓђ› | '); writeln(' -------- --------- ---------- ------------------ ----------------- '); writeln; writeln( ' Ђ ' ,otv,' п зв®-в® Ґ ўЁ¦г'); writeln('--------------------------------------------------------------------------------'); goto start; end; if otv='2' then goto view; if otv='3' then begin if flag=1 then {<--} goto save else begin writeln; writeln(' •®зҐим ¤ҐмЈЁ § Ўа вм? ЌҐ в Є Ўлбва®. —в®Ўл ¤ҐмЈЁ § Ўа вм Ёе 㦮 § а Ў®в вм!'); writeln; delay(65000); delay(65000); delay(65000); delay(65000); delay(65000); delay(65000); delay(65000); goto start; end; end; if otv='4' then goto exit; if otv='0' then begin x:=WhereX; y:=WhereY-1; gotoXY(x,y); writeln(' Ћђ…‹'); end; if otv='1' then begin x:=WhereX; y:=WhereY-1; gotoXY(x,y); writeln(' ђ…˜ЉЂ'); end; money: begin writeln; Writeln(' ” ⥡п ',sum,' агЎ«Ґ©. ‘Є®«мЄ® бв ўЁим?'); writeln; readln(stavka); if stavka>sum then begin writeln; writeln(' ’л зҐ бзЁв вм зв® «Ё Ґ 㬥Ґим, г вҐЎп Ґв в ЄЁе ¤ҐҐЈ!!!'); writeln('-----------------------------------------------------------------'); readln; goto money; end; rez:=random(2); if rez=1 then begin writeln; writeln(' ‚лЇ « ђ…˜ЉЂ'); end; if rez=0 then begin writeln; writeln(' ‚лЇ « Ћђ…‹'); end; tmp:=ord(otv)-48; if {tmp=otv} rez=tmp then begin writeln; writeln(' ”г и а '); sum:=sum+stavka; writeln; writeln(' ‘зҐв: ',sum); flag:=1; {<--} writeln('-----------------------------------------------------------------'); end else begin writeln; writeln( ' ”г б в ЄЁ¬ ЁЈа вм ¤ ¦Ґ Ґ ЁвҐаҐб®'); sum:=sum-stavka; writeln; writeln(' ‘зҐв: ',sum); flag:=1; {<--} writeln('------------------------------------------------------------------'); end; end; end; if sum<=0 then begin writeln; writeln(' ” вҐЎп § Є®зЁ«Ёбм Ў ЎЄЁ. Љ Є в®«мЄ® Ї®пўпвбп, § 室Ё'); delay(65000); delay(65000); delay(65000); delay(65000); delay(65000); delay(65000); delay(65000); goto exit; end; view: if count>0 then begin writeln; writeln(' -------------------------------------------'); writeln(' | €ѓђЋЉ':10, ' | „ҐмЈЁ':10,' |'); writeln(' |-------------------------------------------|'); end; if count>0 then begin i:=1; while i<=count do begin writeln(' | | |'); writeln(' | ',mas[i].name:10,' | ', mas[i].babki:10,' |'); writeln(' | | |'); inc(i); end; writeln(' -------------------------------------------'); end else writeln(' ‘ЇЁб®Є Їгбв'); delay(65000); delay(65000); delay(65000); delay(65000); delay(65000); goto start; view1: if count>0 then begin writeln; writeln(' -------------------------------------------'); writeln(' | €ѓђЋЉ':10, ' | „ҐмЈЁ':10,' |'); writeln(' |-------------------------------------------|'); end; if count>0 then begin i:=1; while i<=count do begin writeln(' | | |'); writeln(' | ',mas[i].name:10,' | ', mas[i].babki:10,' |'); writeln(' | | |'); inc(i); end; writeln(' -------------------------------------------'); end else writeln(' ‘ЇЁб®Є Їгбв'); goto start1; save: {writeln('Љ Є вҐЎп §®ўгв ?я'); readln(imya);} b := False; for i := 1 to count do begin if imya = mas[i].name then begin inc(mas[i].babki, sum); rewrite(f); for j := 1 to count do begin writeln(f, mas[j].name); writeln(f, mas[j].babki); end; close(f); WRITELN; writeln('Џа®©¤Ё ў Є ббг, в ¬ ⥡Ґ ўл¤ ¤гв вў®Ё зҐбв®§ а Ў®в лҐ ¤ҐмЈЁ'); WRITELN; delay(65000); delay(65000); delay(65000); delay(65000); delay(65000); delay(65000); delay(65000); b := true; break; end; end; if not b then if count<N then begin inc(count); mas[count].name:=imya; mas[count].babki:=sum; append(f); writeln(f,mas[count].name); writeln(f,mas[count].babki); close(f); writeln; writeln('Џа®©¤Ё ў Є ббг, в ¬ ⥡Ґ ўл¤ ¤гв вў®Ё зҐбв®§ а Ў®в лҐ ¤ҐмЈЁ '); writeln; delay(65000); delay(65000); delay(65000); delay(65000); delay(65000); delay(65000); delay(65000); end else writeln('Нет места '); goto start1; exit: end. и заработало. Почему так ![]() Сообщение отредактировано: CORS@R - 6.02.2006 1:45 |
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 21:00 |