A downloadable game

#################################
# BASIC Tenliners Contest 2022  #
#                               #
# Taxi Taxi                     #
# (c) 2022 Roman Werner @romwer #
# email: roman.werner@gmail.com #
#################################

Taxi business got so much harder! Uber, Lyft, Curb and many other new transportation services flooded the streets. How can you compete? That's right! To be ahead of your rivals, your cab needs to be with your potential customers BEFORE they even know that they need a ride. So look out for the one exhausted citizen who remains completely still and race there to offer your service before anyone else. Then drive your passenger home safely. But beware of picking up the wrong person who still eventually moves, since this would mean a taxi service policy violation and immediate termination of your business!


Task and Goal

=============

When you start the game you see part of a city from a bird view with 9 buildings surrounded by streets and busy business men and women.

Check the moving citizens (dots) and spot the one person who does remain still over a longer time. Drive your cab (square) as fast as you can to that location and drive over that dot for the pick up. Then take the passenger to the building where the arrow points to. Repeat this 9 times to win the game.

If you accidentally run over any other (active) citizen then the game is immediately over and you return to title screen. Good luck!

Note: If you manage to win the game you see the elapsed time at the top. Do you think you or your friends can go any faster than that?


Control:

========

Use Joystick in Port 2 for moving your cab in all four directions

Fire button to start the game


Game Requirements:

==================

- C64/C128* with BASIC 2.0 runtime environment (or compatible)

- 1 Player

*Also playable on Windows/MacOS/iOS/Android (C64 Emulator required


Taxi BASIC program code:
========================
0poke53280,7:poke53281,7:print"{black}{clear}"tab(16)"{down*12}{cm +} taxi {cm +}{home}":s=4^5:j2=s*55:waitj2,16,16
1poke53280,11:poke53281,11:w=160:c=1363:g=9:f=0:l=32:m=46:n=40:q=20:fori=0to39
2pokes+i,w:poke2023-i,w:o=int(i*.6)*n:pokes+o,w:poke2023-o,w:next:fork=0to2:fori=0to2
3poke214,k*7+2:print:t=i*12+3:printtab(t)"{cyan}U{C*8}I":d(i*3+k)=1312+i*280+k*12:forj=1to3
4printtab(t)"B{gray}{reverse on}{space*8}{reverse off}{cyan}B":next:printtab(t)"J{C*8}K":next:next:ti$="000000":fori=0to8
5o=s+int(rnd(0)*s):on-(peek(o)>l)goto5:pokeo,m:a(i)=o:next:i=0:deffnf(n)=int(rnd(1)*3)-1
6d=peek(j2):a=a(i):ifi<>fthenb=a+fnf(0)*n+fnf(0):ifpeek(b)=lthenpokea,l:a(i)=b:pokeb,m
7e=c+(dand1)*n-(dand2)*q+sgn(dand4)-sgn(dand8):p=peek(e):ifp<=mthenpokec,l:pokee,108:c=e
8i=(i+1)*-(i<8):g=g+(p=30):f=f-(p=30):on-(p=mande<>a(f))goto:ife=a(f)thenpoked(f),30
9print"{home}{reverse on}{black} X"gtab(17)ti$:on-(g>0)goto6:printtab(15)"{down}{pink}well done!":waitj2,16,16:run
Taxi BASIC program code (PUR-80 version using command abbreviations):
=====================================================================
0pO53280,7:pO53281,7:?"{black}{clear}"tA16)"{down*12}{cm +} taxi {cm +}{home}":s=4^5:j2=s*55:wAj2,16,16
1pO53280,11:pO53281,11:w=160:c=1363:g=9:f=0:l=32:m=46:n=40:q=20:fOi=0to39
2pOs+i,w:pO2023-i,w:o=int(i*.6)*n:pOs+o,w:pO2023-o,w:nE:fOk=0to2:fOi=0to2
3pO214,k*7+2:?:t=i*12+3:?tAt)"{cyan}U{C*8}I":d(i*3+k)=1312+i*280+k*12:fOj=1to3
4?tAt)"B{gray}{reverse on}{space*8}{reverse off}{cyan}B":nE:?tAt)"J{C*8}K":nE:nE:ti$="000000":fOi=0to8
5o=s+int(rN(0)*s):on-(pE(o)>l)gO5:pOo,m:a(i)=o:nE:i=0:dEfnf(n)=int(rN(1)*3)-1
6d=pE(j2):a=a(i):ifi<>ftHb=a+fnf(0)*n+fnf(0):ifpE(b)=ltHpOa,l:a(i)=b:pOb,m
7e=c+(daN1)*n-(daN2)*q+sG(daN4)-sG(daN8):p=pE(e):ifp<=mtHpOc,l:pOe,108:c=e
8i=(i+1)*-(i<8):g=g+(p=30):f=f-(p=30):on-(p=maNe<>a(f))gO:ife=a(f)tHpOd(f),30
9?"{home}{reverse on}{black} X"gtA17)ti$:on-(g>0)gO6:?tA15)"{down}{pink}well done!":wAj2,16,16:rU
Tip: Copy/paste the program-Code into CBM prg Studio (http://www.ajordison.co.uk/).
There you can see the commands in nice color highlighting and you can directly execute the game in an emulator of your choice.
Taxi Tenliner explained (000=row 0/100=row 1/...):
==================================================
000 poke53280,7: rem set border color to yellow
001 poke53281,7: rem set backgroudn color to yellow
002 print"{black}{clear}"tab(16)"{down*12}{cm +} taxi {cm +}{home}": rem clear screen and print title
003 s=4^5: rem screen address 1024 (saved one character)
004 j2=s*55: rem joystick port 2 addresss 56320 (saved one character)
005 waitj2,16,16: rem wait for joystick button
100 poke53280,11: rem set border color to dark gray
101 poke53281,11: rem set background color to dark gray
102 w=160: rem screen poke value for inverse space
103 c=1363: rem taxi screen start position
104 g=9: rem no of citizens to collect
105 f=0: rem start index for exhausted citizen position array
106 l=32: rem constant for space poke value
107 m=46: rem constant for dot poke value
108 n=40: rem constant for characters per line in screen editor
109 q=20: rem constant for characters per line in screen editor / 2
110 fori=0to39: rem for 40 times...
200 pokes+i,w: rem draw top border element
201 poke2023-i,w: rem draw bottom border element
202 o=int(i*.6)*n: rem calculate relative offset for side borders
203 pokes+o,w: rem draw left border element
204 poke2023-o,w: rem draw right border element
205 next
206 fork=0to2: rem for 3 times vertically...
207 fori=0to2: rem for 3 times horizontally...
300 poke214,k*7+2: rem set cursor line position
301 print: rem place cursor at beginning of that line
302 t=i*12+3: rem calculate horizontal tab position
303 printtab(t)"{cyan}U{C*8}I": rem print building top
304 d(i*3+k)=1312+i*280+k*12: rem calculate offset for building entrance
305 forj=1to3: rem for 3 times...
400 printtab(t)"B{gray}{reverse on}{space*8}{reverse off}{cyan}B": rem print building middle
401 next
402 printtab(t)"J{C*8}K": rem print building bottom
403 next
404 next
405 ti$="000000": rem reset timer
406 fori=0to8: rem for 9 times...
500 o=s+int(rnd(0)*s): rem calculate screen offset citizen
501 on-(peek(o)>l)goto500: rem if another citizen is already at that position, try again
502 pokeo,m: rem draw citizen (dot) on screen
503 a(i)=o: rem add offset to citizen array
504 next
505 i=0: rem initialize citizen loop counter
506 deffnf(n)=int(rnd(1)*3)-1: rem define function to get citizen direction
600 d=peek(j2): rem get joystick value
601 a=a(i): rem get next citizen screen offset
602 ifi<>fthenb=a+fnf(0)*n+fnf(0): rem if citizen is active then calculate next random position
603 ifpeek(b)=lthenpokea,l:a(i)=b:pokeb,m: rem if new position is empty then move citizen
700 e=c+(dand1)*n-(dand2)*q+sgn(dand4)-sgn(dand8): rem calculate new taxi position based on joystick direction
701 p=peek(e): rem read character at new taxi screen position
702 ifp<=mthenpokec,l:pokee,108:c=e: rem if character is less than or equal 46 (up arrow) allow move
800 i=(i+1)*-(i<8): rem makes sure that index starts again at 0 after reaching 9
801 g=g+(p=30): rem subtract 1 when taxi has delivered citizen to the building
802 f=f-(p=30): rem add 1 to citizen index when taxi has delivered citizen to the building
803 on-(p=mande<>a(f))goto: rem if taxi picks up active citizen then terminate game
804 ife=a(f)thenpoked(f),30: rem if taxi picks up exhausted citizen then show arrow up on building
900 print"{home}{reverse on}{black} X"gtab(17)ti$: rem print remaining citizens plus elapsed time
901 on-(g>0)goto600: rem while not all citizens have been transported home continue with main loop
902 printtab(15)"{down}{pink}well done!": rem print success message
903 waitj2,16,16: rem wait for fire button
904 run: rem restart game
2022 rem basic 10liners contest / (c) roman werner @romwer 



Trivia

======

This game was created with the mind of a futuristic Cyberpunk 2077 city theme in gray with contrasting neon colors. Hence the yellow title screen with black writing used to say "CYBERPUNK" before changing it to "# TAXI #".


Install instructions

Starting in VICE: C64 emulator (http://vice-emu.sourceforge.net/):

=========================================================

Start the emulator and then drag and drop the "taxi.prg" into the VICE window.

-or-

Load the program with the command: load "taxi.prg",8

Then start the program with:       run

Download

Download
Taxi Taxi.d64 170 kB
Download
taxi taxi.prg 731 bytes
Download
Taxi Taxi.txt 8 kB
Download
Taxi Taxi (code).png 7 kB

Leave a comment

Log in with itch.io to leave a comment.