User Tag List

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

Тема: PDP-11 и всё всё всё :)

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

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

    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,508
    Спасибо Благодарностей отдано 
    344
    Спасибо Благодарностей получено 
    714
    Поблагодарили
    596 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    The game is very similar to the traditional Star-Trek game with the following exceptions.

    First, the game involves several players (1-6), each of whom has his own terminal and starship.

    Second, the game runs in real time as far as the players are concerned. For example, if you are going warp 8 you will continue to move regardless of your activity at the terminal (unless you are destroyed, hit something, run out of energy, or change your warp speed). Each player's status and position as well as the scores of all players is displayed and continuously updated at each player's terminal. (The update rate is twice per second, but the source code is commented on where to change it should you wish to do so.)

    Third, at the present time there are no Klingons or Romulans to shoot down, instead you shoot (or at least attempt to shoot) the other players.


    Игра очень похожа на традиционную игру СтарТрек со следующими отличиями.

    Во-первых, в игре участвуют несколько игроков (от 1 до 6), играющими каждый со своего термаинала и на своем звёздном судне.

    Во-вторых, игра идёт настолько в реальном времени, насколько игроки заинтересованы. Например, если Вы начали перемещаться варпом со скоростью 8, движение продолжается независимо от ваших действий за терминалом (если только Вы не уничтожены, не ударились обо что-то, не израсходовали всю энергию или не изменили скорость варпа). Статус и позиция каждого игрока, а так же счёт всех игроков отображается и постоянно обновляется на терминале каждого игрока (по умолчанию частота обновления - дважды в секунду, но в исходном тексте есть комментарии - как это изменить, будь на то ваша воля).

    В-третьих, в настоящее время во Вселенной нет ни клингонов, ни ромулан, которых можно было бы перестрелять, зато Вы можете перестрелять (ну или по крайне мере попробовать перестрелять) других игроков.

    ...

    4.0 TERMINATING THE GAME


    It is important that the last MTREK players clean up the system before they leave. This is done by issuing the following set of commands:

    1. Terminate each PLAYER program by entering the "Q" command.

    2. If the universe manager MTREKD does not terminate automatically abort it as follows:

    <CNTRL> C
    MCR> ABORT

    3. If you are running any ROBOT programs abort each one as follows:

    <CNTRL> C
    MCR> ABORT

    Now mop up the blood, sweat, and tears; logout; and go home.


    4.0 Завершение игры

    Важно, что бы последние игроки MTREK убрались за собой в системе перед тем, как выйти.
    Это делается следующими действиями:

    1. Завершить работу каждой программы PLAYER вводом команды Q.
    2. Если программа MTREKD, управляющая вселенной, не завершила свою работы автоматически, завершите её работу следующими действиями:

    Ctrl/C
    MCR> ABORT

    3. Если Вы запустили одну или несколько копий программы ROBOT, завершите их работу следующими действиями:

    Ctrl/C
    MCR> ABORT

    А теперь время вытереть кровь, пот и слезы, выйти из системы и идти домой.

    -------------------

    Другая игрушка:

    This game is similar to the arcade game, CENTIPEDE. As written, it must be played on a VT100 video terminal. You have a gun, which you can move around on the bottom third of the screen (player's zone) and with which you can shoot at various invading creatures. Bullets from your gun travel upwards until they either hit a target or the top of the screen. No more than one bullet can be on the screen at a time. Centipedes appear at various times on the screen, consisting of a head and from zero to eleven body segments. Centipedes move back and forth across the screen, descending a level when they hit a screen boundary, a mushroom, or another centipede. When they reach the bottom of the screen they begin to ascend in the same manner, but remain within the player's zone. The object of the game is to kill these centipedes before they eat your gun.

    Модуль из неё, написан на RATFOR:

    Код:
    	SUBROUTINE BULCOL
    #
    #	THIS SUBROUTINE CONTROLS COLLISIONS BETWEEN BULLETS AND TARGETS.
    #
    	IMPLICIT INTEGER (A-Z)
    	INCLUDE SY:CNTPED.CMN
    	INCLUDE SY:UVT100.DAT
    	BYTE THREE,SIX,NINE
    %	DATA THREE,SIX,NINE / "063,"066,"071 /
    #
    #	CHECK IF CURRENT BULLET LOCATION COLLIDES WITH MUSHROOM
    #
    	IF (MSHBRD(BULX,BULY) > 0) [
    	  BULACT = 0
    	  MSHBRD(BULX,BULY) = MSHBRD(BULX,BULY) - 1
    	  IF (MSHBRD(BULX,BULY) == 0) [
    	    PSNBRD(BULX,BULY) = 0
    	    SCORE = SCORE + 1
    	    ]
    	  ]
    #
    #	CHECK IF CURRENT BULLET LOCATION COLLIDES WITH CENTIPEDE(S)
    #
    	DO I = 1,MAXCNT [		#LOOP THROUGH CENTIPEDE TABLE ENTRIES
    	  IF (CLEN(I) == 0)
    	    NEXT			#UNUSED ENTRY
    	  DO J = 1,CLEN(I) [		#LOOP THROUGH LINKS FOR THIS ENTRY
    	    IF (BULX == CX(I,J) .AND. BULY == CY(I,J)) [  #COLLISION
    	      BULACT = 0
    	      MSHBRD(BULX,BULY) = 4	#CREATE MUSHROOM IN MUSHROOM TABLE
    	      CNTBRD(BULX,BULY) = 0	#CLEAR CENTIPEDE BOARD AT THIS LOC
    	      IF (J == 1) [		#COLLISION WITH CENTIPEDE HEAD
    	        SCORE = SCORE + 100	#INCREMENT SCORE
    	        CLEN(I) = CLEN(I) - 1	#'SHORTEN' CENTIPEDE
    	        IF (CLEN(I) > 0) [	#IF LENGTH NOT ZERO
    	          DO K = 1,CLEN(I) [	#UPDATE LINKS IN CENTIPEDE TABLE
    	            CX(I,K) = CX(I,K+1)
    	            CY(I,K) = CY(I,K+1)
    	            ]
    	          CALL UVT100(CUP,CX(I,1),CY(I,1)) #DISPLAY NEW CENTIPEDE HEAD
    	          IF (CDIR(I) == LEFT)
    	            CALL GETADR(PRL,CLHEAD)
    	          ELSE IF (CDIR(I) == RIGHT)
    	            CALL GETADR(PRL,CRHEAD)
    	          ELSE
    	            CALL GETADR(PRL,CDHEAD)
    	          CALL WTQIO(IOWVB,5,2,,,PRL)
    	          ]
    	        ]
    	      ELSE [			#COLLISION WITH CENTIPEDE BODY
    	        SCORE = SCORE + 10	#INCREMENT SCORE
    	        NEWLEN = CLEN(I) - J
    	        CLEN(I) = J - 1
    	        IF (NEWLEN > 0) [
    	          DO K = 1,MAXCNT [	#FIND EMPTY SLOT IN CENTIPEDE TABLE
    	            IF (CLEN(K) > 0)
    	              NEXT
    	            DO L = 1,NEWLEN [	#MOVE NEW CENTIPEDE LINKS TO THIS SLOT
    	              CX(K,L) = CX(I,L+J)
    	              CY(K,L) = CY(I,L+J)
    	              ]
    	            CLEN(K) = NEWLEN	#NEW CENTIPEDE LENGTH
    	            CDIR(K) = CDIR(I)	#NEW CENTIPEDE DIRECTION OF MOTION
    	            CRISE(K) = CRISE(I)	#NEW CENTIPEDE ASCEND OR DESCEND
    	            CBOT(K) = CBOT(I)	#NEW CENTIPEDE HIT BOTTOM FLAG
    	            CALL UVT100(CUP,CX(K,1),CY(K,1))
    	            IF (CDIR(K) == LEFT) #DISPLAY NEW CENTIPEDE HEAD
    	              CALL GETADR(PRL,CLHEAD)
    	            ELSE IF (CDIR(K) == RIGHT)
    	              CALL GETADR(PRL,CRHEAD)
    	            ELSE
    	              CALL GETADR(PRL,CDHEAD)
    	            CALL WTQIO(IOWVB,5,2,,,PRL)
    	            BREAK
    	            ]
    	          ]
    	        ]
    	      ]
    	    ]
    	  ]
    #
    #	CHECK IF CURRENT BULLET LOCATION COLLIDES WITH SPIDER
    #
    	IF (SPIACT == 1 .AND. BULX == SPIX .AND. BULY == SPIY) [
    	  BULACT = 0
    	  SPIACT = 0
    	  SPITIM = TIMER + 30		#SCHEDULE NEXT SPIDER
    	  ITMP = GUNX - SPIX
    	  IF (ITMP < 0)
    	    ITMP = 0
    	  CALL UVT100(CUP,BULX,BULY)
    	  IF (ITMP < 2) [		#INCREMENT SCORE
    	    SCORE = SCORE + 900
    	    CALL GETADR(PRL,NINE)
    	    ]
    	  ELSE IF (ITMP < 4) [
    	    SCORE = SCORE + 600
    	    CALL GETADR(PRL,SIX)
    	    ]
    	  ELSE [
    	    SCORE = SCORE + 300
    	    CALL GETADR(PRL,THREE)
    	    ]
    	  CALL WTQIO(IOWVB,5,2,,,PRL)	#DISPLAY POINTS FOR KILL
    	  CALL WAIT(200,1)		#WAIT 200 MILLISECONDS
    	  ]
    #
    #	CHECK IF CURRENT BULLET LOCATION COLLIDES WITH FLEA
    #
    	IF (FLEACT == 1 .AND. FLEX == BULX .AND. FLEY == BULY) [
    	  BULACT = 0
    	  FLEACT = 0
    	  ICOUNT = 0
    	  DO I = GMAR,BMAR [		#NEXT SCHEDULED FLEA TIME DEPENDS
    	    DO J = LMAR,RMAR [		#ON NUMBER OF MUSHROOMS IN PLAYER ZONE
    	      IF (MSHBRD(I,J) > 0)
    	        ICOUNT = ICOUNT + 1
    	      ]
    	    ]
    	  IF (ICOUNT < 5)		#SCHEDULE NEXT FLEA
    	    FLETIM = FLETIM + 20
    	  ELSE
    	    FLETIM = FLETIM + 200
    	  SCORE = SCORE + 200		#INCREMENT SCORE
    	  ]
    #
    #	CHECK IF CURRENT BULLET LOCATION COLLIDES WITH SCORPION
    #
    	IF (SCOACT == 1 .AND. SCOX == BULX .AND. SCOY == BULY) [
    	  BULACT = 0
    	  SCOACT = 0
    	  SCOTIM = SCOTIM + 200		#SCHEDULE NEXT SCORPION
    	  SCORE = SCORE + 1000		#INCREMENT SCORE
    	  ]
    #
    #	IF BULLET HIT SOMETHING, DISPLAY APPROPRIATE CHARACTER
    #
    	IF (BULACT == 0) [
    	  CALL UVT100(CUP,BULX,BULY)
    	  CALL GETADR(PRL,SPACE)
    	  IF (MSHBRD(BULX,BULY) > 0)
    	    CALL GETADR(PRL,MSHCHR)
    	  IF (PSNBRD(BULX,BULY) == 1)
    	    CALL GETADR(PRL,PSNCHR)
    	  CALL WTQIO(IOWVB,5,2,,,PRL)
    	  ]
    	RETURN
    	END
    Последний раз редактировалось Hunta; 12.03.2020 в 13:13.

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

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

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

Похожие темы

  1. Цифровая археология: 1801 и все-все-все
    от Vslav в разделе ДВК, УКНЦ
    Ответов: 2726
    Последнее: 03.11.2025, 17:07
  2. Вспомнить всё
    от Patison в разделе Люди
    Ответов: 195
    Последнее: 27.04.2024, 16:09

Ваши права

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