Recreation of a C64 classic: Castles of Dr. Creep.
Compared to the original there are some changes, on the one hand because the layout is different (40x24 vs 16x16), on the other hand because I have defused some "backtracking" and death traps. Nevertheless, please note, the levels are from 1984 - there you have something different design.
Story
Playing the game
Obstacles
Editor
Working with the editor
behind the scenes
sources
Was just reading the book "The Making of Prince of Persia" today and they mentioned a game The Castle of Dr. Creep. Never heard of it and then I come across this. Very well done.
@GPI +1 to very impressive. Got too hard for me a few rooms after I left the tutorial, but that's on me.
@GPI Edit: Thankyou for taking the time to explain your table-stringify function to me. I was able to create my own from scratch cause of your help, and I have since updated everything I have made to use it instead. I deleted my posts to cleanup your thread, and made notes of anything you taught to me so your posts can be deleted as well if you so choose. Thanks again.
strange the e-mail is correct.. can you delete it from your post?
b is not only a table, it contains tables
so b[#b] will return the last table in the b-table and this table you can get a size #b[#b] increase by 1.
also see a table more than an reference as a table
a={} b=a -- reference to the same table as in a! a[1]=99 print( b[1] ) -- will return 99! |
for example
str = [[ u=10 v={ 20 30 40 } duck ]] |
b is at the beginning
b = { {} } |
first line:
u=10
will add u=10 in the last table inside b
b = { {u = 10} } |
v={
-- create a new table and set insert it with the "v"-Key in the top table of b
-- also reference the same table as new top entry in b
b = { {u = 10, v = {}}, {}, -- <- this table is the same as the v={} ! } |
20
-- here we have no key value, so we look at the last table in b (b[2]), get the size #b[2] of 0, add 1
-- and the new generated key "1"
-- add [1]=20 to the top element of the b. (this will also change v, because it has the same reference)
b = { {u = 10, v = {[1] = 20}}, { [1] = 20 }, } |
30
b = { {u = 10, v = {[1] = 20, [2] = 30}}, { [1] = 20, [2] = 30 }, } |
40
b = { {u = 10, v = {[1] = 20, [2] = 30, [3] = 40}}, { [1] = 20, [2] = 30, [3] = 40 }, } |
}
-- now we have a end of table
-- we only need to drop the last table inside b
b = { {u = 10, v = {[1] = 20, [2] = 30, [3] = 40}}, } |
duck
b = { {u = 10, v = {[1] = 20, [2] = 30, [3] = 40}, [1]=duck}, } |
B is a table which contains table. the last table here is always a reference of the active element, where to add new values.
Thats why the code return b[1] - the first table in the table.
This is one of the truly iconic c64 games everyone got and played
back in the days. But like with all vintage only a few mainstream
things are remembered in the major public.
I cannot give you enough kudos for done this fantastic and very
accurate conversion.
[Please log in to post a comment]