Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 06.03.2015
Сообщений: 5

Создать игру - изъятие предметов

06.03.2015, 12:48. Показов 916. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста. Нужно написать игру , в которую играет компьютер и пользователь. Первый ход должен быть рандомным. Всего 9 предметов, из них можно брать от 1 до 3 предметов за один ход.Компьютер берет рандомное количество предметов.Проигрывает тот, кто обязан брать последний предмет.Эту программу нужно написать на паскале.
Заранее благодарю.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.03.2015, 12:48
Ответы с готовыми решениями:

В массиве хранятся сведения о стоимости 12 различных предметов. Определить общую стоимость всех предметов
В массиве хранятся сведения о стоимости 12 различных предметов. Определить общую стоимость всех предметов. кто нибудь помогите сделать

Создать список типа базы данных из фамилий, предметов, оценок по ним
Создать список типа базы данных из фамилий,предметов,оценок по ним!!!! -вывести список упорядоченный по алфавиту -вывести список...

Как внедрить в игру подсветку предметов?
Здравствуйте, можете объяснить как внедрить в игру подсветку предметов при наведение на оного. С помощью программы dnSpy. Я открыл...

10
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
06.03.2015, 12:58
Цитата Сообщение от Valov_ilya Посмотреть сообщение
Эту программу нужно написать на паскале.
На каком Паскале? Они разные бывают для чего и создано 4 подраздела, но это для умных...
0
6 / 6 / 13
Регистрация: 27.01.2015
Сообщений: 24
06.03.2015, 14:28
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
uses crt;
var predmet,komp,chel:integer;
begin
 
 randomize;
 writeln('Всего предметов 9');
 predmet:=9;
 repeat
  komp:=random(3)+1;
  
  if predmet = 3 then
   komp:=random(2)+1;
  if predmet = 2 then
   komp:=1;
   
  predmet:=predmet-komp;  
  if predmet <=0 then
  begin
   writeln('Ты выиграл');
   break;
  end;
  
  writeln('Комп взял ',komp,' предметов, осталось ',predmet);
  
  if predmet <=1 then
  begin
   writeln('Ты проиграл'); 
   break;
  end;
 
 writeln('Сколько возьмешь ты? ');
  repeat
   read(chel);
  until chel in [1..3];
  
  predmet:=predmet-chel;
  
  if predmet =0 then
  begin
   writeln('Ты проиграл'); 
   break;
  end;  
  
  writeln('Ты взял - ', chel,' предмет, осталось ',predmet); 
 
 until predmet<=0;
end.
0
2 / 2 / 6
Регистрация: 09.11.2014
Сообщений: 71
06.03.2015, 15:58
Sway, замените integer на shortint. Меньше памяти задействовано, как результат — выше скорость работы.
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7816 / 4635 / 2837
Регистрация: 22.11.2013
Сообщений: 13,158
Записей в блоге: 1
08.03.2015, 14:16
Цитата Сообщение от 725973 Посмотреть сообщение
замените integer на shortint. Меньше памяти задействовано, как результат — выше скорость работы.
Кто вам сказал такую глупость?
0
2 / 2 / 6
Регистрация: 09.11.2014
Сообщений: 71
12.03.2015, 17:11
bormant, Википедия.
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7816 / 4635 / 2837
Регистрация: 22.11.2013
Сообщений: 13,158
Записей в блоге: 1
12.03.2015, 17:26
725973,
не читайте Википедии перед обедом...
Хотя тут, пожалуй, не Википедия виновата, а ваша интерпретация прочитанного.

На досуге подумайте над тем, зачем делается выравнивание переменных в памяти, оно ведь увеличивает количество памяти, занятых переменными.

А если учесть наличие ввода от пользователя да вывода на экран через строку, то про какое быстродействие вообще можно говорить?
0
2 / 2 / 6
Регистрация: 09.11.2014
Сообщений: 71
13.03.2015, 09:32
bormant, но ведь integer больше shortint!
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7816 / 4635 / 2837
Регистрация: 22.11.2013
Сообщений: 13,158
Записей в блоге: 1
13.03.2015, 11:19
725973,
да, Integer больше ShortInt, но в данном конкретном случае не медленнее, нет в примере таких операций, где операции с ShortInt оказались бы быстрее.
Не верите? Посмотрите в скомпилированный код (например, в том же TD), посчитайте процессорные такты и сравните.

Для 16-битного кода (а TP/BP другого не умеет) размер машинного слова и размер регистров общего назначения 16 бит, 2 байта. Уменьшение размера от LongInt до Integer для 16-битного кода имеет значение. Но проявит оно себя только тогда, когда подобные операции многократно повторяются в длинных циклах. Сокращение с Integer до ShortInt может проявить себя, когда пишутся/читаются большие блоки данных. В приведённом примере таких ситуаций нет.
Более того, все вместе взятые неинтерактивные операции в коде выполняются в огромное число раз быстрее, чем ввод пользователя, на его фоне являются незначимой величиной.

Добавлено через 58 минут
В целом ShortInt не будет быстрее (1:ShortInt, 2: Integer):
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
PROGRAM.6:  predmet:=9;
1:cs:008D C606520009     mov    byte ptr [0052],09
2:cs:008D C70652000900   mov    word ptr [0052],0009
 
PROGRAM.9:  komp:=Random(3)+1;
  cs:00BD B80300         mov    ax,0003
  cs:00C0 50             push   ax
  cs:00C1 9A13087649     call   4976:0813
  cs:00C6 40             inc    ax
1:cs:00C7 A25300         mov    [0053],al
2:cs:00C7 A35400         mov    [0054],ax
 
PROGRAM.10:  if predmet=3 then
1:cs:00CA 803E520003     cmp    byte ptr [0052],03
2:cs:00CA 833E520003     cmp    word ptr [0052],0003
  cs:00CF 750D           jne    PROGRAM.12 (00DE)
 
PROGRAM.11:  komp:=Random(2)+1;
  cs:00D1 B80200         mov    ax,0002
  cs:00D4 50             push   ax
  cs:00D5 9A13087649     call   4976:0813
  cs:00DA 40             inc    ax
1:cs:00DB A25300         mov    [0053],al
2:cs:00DB A35400         mov    [0054],ax
 
PROGRAM.12:  if predmet=2 then
1:cs:00DE 833E520002     cmp    word ptr [0052],0002
2:cs:00DE 803E520002     cmp    byte ptr [0052],02
  cs:00E3 7506           jne    PROGRAM.14 (00EB)
 
PROGRAM.13:  komp:=1;
1:cs:00E5 C606530001     mov    byte ptr [0053],01
2:cs:00E5 C70654000100   mov    word ptr [0054],0001
А вот вам кусочек, где ShortInt медленнее Integer:
Integer:
Code
1
2
3
4
5
6
7
8
9
PROGRAM.14:  predmet:=predmet-komp;
  cs:00EB A15200         mov    ax,[0052]
  cs:00EE 2B065400       sub    ax,[0054]
  cs:00F2 A35200         mov    [0052],ax
...
PROGRAM.28:  predmet:=predmet-chel;
  cs:01C4 A15200         mov    ax,[0052]
  cs:01C7 2B065600       sub    ax,[0056]
  cs:01CB A35200         mov    [0052],ax
ShortInt:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
PROGRAM.14:  predmet:=predmet-komp;
  cs:00EA A05300         mov    al,[0053]
  cs:00ED 98             cbw
  cs:00EE 8BD0           mov    dx,ax
  cs:00F0 A05200         mov    al,[0052]
  cs:00F3 98             cbw
  cs:00F4 2BC2           sub    ax,dx
  cs:00F6 A25200         mov    [0052],al
...
PROGRAM.28:  predmet:=predmet-chel;
  cs:01CA A05400         mov    al,[0054]
  cs:01CD 98             cbw
  cs:01CE 8BD0           mov    dx,ax
  cs:01D0 A05200         mov    al,[0052]
  cs:01D3 98             cbw
  cs:01D4 2BC2           sub    ax,dx
  cs:01D6 A25200         mov    [0052],al
В примере явно видны лишние операции CBW по преобразованию знакового байта (ShortInt) в знаковое слово (Integer).

Добавлено через 6 минут
725973,
Убедил?
0
2 / 2 / 6
Регистрация: 09.11.2014
Сообщений: 71
13.03.2015, 13:34
Цитата Сообщение от bormant Посмотреть сообщение
Посмотрите в скомпилированный код
bormant, каким образом?
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7816 / 4635 / 2837
Регистрация: 22.11.2013
Сообщений: 13,158
Записей в блоге: 1
13.03.2015, 14:29
Цитата Сообщение от 725973 Посмотреть сообщение
каким образом?
Цитата Сообщение от bormant Посмотреть сообщение
Посмотрите в скомпилированный код (например, в том же TD)
Для Turbo/Borland Pascal компилируете компилятором командной строки с ключом -V, или в интегрированной среде разработки (IDE) включаете компиляцию на диск (Compile - Destination - Disk) и параметры Options - Compiler - Debug info и Options - Debugger - Standalone, компилируете (F9), открываете получившийся test.exe в чем-либо, умеющем показывать ассемблерный код, например HIEW или Turbo Debugger:
Code
1
2
> tpc -v test
> td test.exe
открываете окно с ассемблерным кодом (View - CPU) и изучаете. Увидите примерно то, что было в фрагментах выше.

FPC умеет генерировать ассемблерный листинг сам, например,
Code
1
> fpc -s -al test
и изучайте ассемблерный листинг test.s.

По табличке инструкций процессоров x86 считаете такты в одном и другом случае, о выводах рассказываете.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.03.2015, 14:29
Помогаю со студенческими работами здесь

Известна масса каждого из 12 предметов. Определить общую массу всего набора предметов
Известна масса каждого из 12 предметов. Определить общую массу всего набора предметов.

Известна масса каждого из 12 предметов, определить общую массу всего набора предметов
Известна масса каждого из 12 предметов. Определить общую массу всего набора предметов.

Известна масса каждого из 12 предметов, определить общую массу всего набора предметов
известна масса каждого из 12 предметов определить общую массу всего набора предметов ?

В массиве хранятся сведения о стоимости 12 различных предметов. Определить общую стоимость всех предметов
Помогите написать в Builder C++ Добавлено через 14 секунд В массиве хранятся сведения о стоимости 12 различных предметов. Определить...

В массиве хранится сведения о стоимости 12 различных предметов. определить общую стоимость всех предметов?
В массиве хранится сведения о стоимости 12 различных предметов. определить общую стоимость всех предметов?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru