From ddd68e2cb6297efc6eb735f3b3a12f5cebecc854 Mon Sep 17 00:00:00 2001 From: Simon Forman Date: Sat, 13 Apr 2024 15:06:32 -0700 Subject: [PATCH] Give the stars large id numbers. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Then when you display them they can be mapped to a deterministic human readable format, like letters or some Unicode symbols? Name generators? 🌑 🌒 🌓 🌔 🌕 🌖 🌗 🌘 ♈ ♉ ♊ ♋ ♌ ♍ ♎ ♏ ♐ ♑ ♒ ♓ --- game.sqlite | Bin 36864 -> 53248 bytes stars.py | 69 ++++++++++++++++++++++++++++++++++++++++++++++------ 2 files changed, 61 insertions(+), 8 deletions(-) diff --git a/game.sqlite b/game.sqlite index 62e2e0210ae6dd203be4e0686b610cd037531f7c..90a750d3cbf8020cd7a9a35c515318f02ad33e3f 100644 GIT binary patch literal 53248 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 i>KfKKfB? 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%0AS53sj=n?V~ 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 literal 36864 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 diff --git a/stars.py b/stars.py index 03ec5be..e315b60 100644 --- a/stars.py +++ b/stars.py @@ -17,7 +17,22 @@ # You should have received a copy of the GNU General Public License # along with game. If not see . # -from random import randint, expovariate, seed +''' +A field of stars. Each has planets. Each planet has...? + +Keep it simple. + +Stars have what qualities? +- Cosmetic + - color + - brightness + - size +- Game stats + - ? + + +''' +from random import randint, expovariate, seed, getrandbits from poisson import poisson @@ -30,21 +45,38 @@ MINIMUM_DISTANCE_BETWEEN_STARS = 160 WIDTH, HEIGHT = 10240, 7680 +# Database stuff. SQL, etc. + +def generate_list_of_u64_for_ids(n): + ''' + Return a sorted list of n random 64-bit integers + (suitable for SQLite rowid columns.) + See https://www.sqlite.org/lang_createtable.html#rowid + ''' + result = set() + safety = 10 + while n > 0: + canidate = getrandbits(63) + while canidate in result: + if not safety: + raise RuntimeError('this should not happen') + safety -= 1 + canidate = getrandbits(63) + result.add(canidate) + n -= 1 + return sorted(result) + + TABLES = [ - 'create table stars (x INTEGER, y INTEGER, radius INTEGER)', + 'create table stars (id INTEGER PRIMARY KEY, x INTEGER, y INTEGER, radius INTEGER)', ] -def generate_stars(width, height, minimum_distance_between_stars): - for x, y in poisson(width, height, minimum_distance_between_stars): - yield x, y, round(1 + expovariate(1)) - - def init_db(conn): print('Generating star data.') c = conn.cursor() for values in generate_stars(WIDTH, HEIGHT, MINIMUM_DISTANCE_BETWEEN_STARS): - c.execute('insert into stars values (?, ?, ?)', values) + c.execute('insert into stars values (?, ?, ?, ?)', values) c.close() conn.commit() @@ -54,3 +86,24 @@ def iter_stars(conn): c.execute('select x, y, radius from stars') yield from c.fetchall() c.close() + + +# Procedural Generation of solar system data + + +def generate_stars(width, height, minimum_distance_between_stars): + # we could just call getrandbits(64) here for ID and hope for the best. + # it's a large domain (u64) so collisions are unlikely(!). + coords = list(poisson(width, height, minimum_distance_between_stars)) + ids = generate_list_of_u64_for_ids(len(coords)) + for star_id, (x, y) in zip(ids, coords): + yield star_id, x, y, round(1 + expovariate(1)) + + +def how_many_planets(): + n = round(gauss(5, 5)) + while n < 0: + n = round(gauss(5, 5)) + return n + +