Taxi Taxi by romwer
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 #".
Status | Released |
Author | BASIC 10Liner |
Genre | Action |
Tags | 8-Bit, basic, basic10liner, Commodore 64 |
Download
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
Leave a comment
Log in with itch.io to leave a comment.