User Tag List

Показано с 1 по 10 из 19

Тема: Поделитесь парой процедур (печать, преобразование в число)

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #11

    Регистрация
    15.04.2011
    Адрес
    г. Новосибирск
    Сообщений
    769
    Спасибо Благодарностей отдано 
    67
    Спасибо Благодарностей получено 
    372
    Поблагодарили
    60 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от STD Посмотреть сообщение
    процедурой, которая переводит текстовую строку, в которой написано число, в собственно число. Те текст "32000" в число 32000.
    А для какой цели? Если для счёта в игре, то я использую такую штуку от автора AGD. Счёт храниться как строка и печатаешь его как строку, а для добавления используется addScore.

    Код:
    score  defb "000000"
    
    addScore  ld a,(hl)           ; current value of digit.
              add a,b             ; add points to this digit.
              ld (hl),a           ; place new digit back in string.
              cp 58               ; more than ASCII value '9'?
              ret c               ; no - relax.
              sub 10              ; subtract 10.
              ld (hl),a           ; put new character back in string.
    uscor0    dec hl              ; previous character in string.
              inc (hl)            ; up this by one.
              ld a,(hl)           ; what's the new value?
              cp 58               ; gone past ASCII nine?
              ret c               ; no, scoring done.
              sub 10              ; down by ten.
              ld (hl),a           ; put it back
              jp uscor0           ; go round again.
    Т.е. когда нужно добавит счёта, например 5 очков, делаем так:

    Код:
           ld hl,score+5
           ld b,5
           call addScore
    Когда нужно реализовать hiScore, просто сравниваем два набора строк, например так:

    Код:
    checkHiScore
            xor a
            ld (HI_SCORE_FLAG),a
                                     ;cp two sets of ASCII
            ld ix,score
            ld hl,hScore
            ld b,6                          ;5 digits only, the 6th one is always 0
    chilp	ld a,(ix+0)			;new score byte
    	cp (hl)				;cp old score byte
    	ret c				;if carry set old score is higher
    	jr nz,newsc			;nc & nz means new score is higher
    	inc ix	
    	inc hl
    	djnz chilp
    	ret				;reaching here means hi & low score equal
    newsc   ld hl,score                     ;ok new score is higher than old hi score
            ld de,hScore                   ;new high score, so ldir it in place
    	ld bc,6
            ldir
            ;set hi score flag
            ld a,1
            ld (HI_SCORE_FLAG),a
            ret
    Последний раз редактировалось DenisGrachev; 29.07.2016 в 10:38.

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Ответов: 19
    Последнее: 25.10.2021, 08:54
  2. Пара процедур для новой игры SLIP'a
    от newart в разделе Программирование
    Ответов: 34
    Последнее: 29.03.2014, 17:54
  3. Библиотека нужных процедур для написания демо
    от GM BIT в разделе Программирование
    Ответов: 297
    Последнее: 14.02.2014, 08:47
  4. Число проданных копий
    от alone в разделе Игры
    Ответов: 9
    Последнее: 21.03.2013, 22:48
  5. Быстро вывести число 0-255 на экран
    от Aprisobal в разделе Программирование
    Ответов: 7
    Последнее: 26.01.2005, 08:05

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •