BCC #88 (2.Versuch) - ASCII-Welt

Übersicht Sonstiges Projekte

Neue Antwort erstellen

Holzchopf

Meisterpacker

Betreff: BCC #88 (2.Versuch) - ASCII-Welt

BeitragSo, Mai 08, 2016 12:40
Antworten mit Zitat
Benutzer-Profile anzeigen
user posted image

BCC #88 - ASCII-Welt

Thema
Schreibt einen ASCII-Welt-Generator. That's it! Cool wäre natürlich, wenn man zumindest die Grösse der generierten Karte bestimmt könnte.

Hier ein paar Beispiele, die verdeutlichen sollen, wovon ich rede:

Code: [AUSKLAPPEN]
                    ~~~~~~~~~~~~~~                                       
               ~~~~~~~~~~~~~~~~~~~~~                                     
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                               
        ~~~~~~~~~~~~~~~~        ~~~~~~~~~~~                               
     ~~~~~~~~~~                        ~~~~~~~~~~~                       
     ~~~~~~~~~                           ~~~~~~~~~~~~                     
    ~~~~~~           ^^^       ******        ~~~~~~~~~~~~~~               
    ~~~~~           ^^^       ********      ~~~~~~~~~~~~~~~~~~~~~~~       
     ~~~~        ^^^^^         ********        ~~~~~~~~~~~~~~~~~~~~~~     
  ~~~~~~~~     ^^^^^           **********        ~~~~~~~~~~~~~~~~~~~~~   
  ~~~~~~~~      ^^^^^             ********       ~~~~~~~    ^^    ~~~~~   
    ~~~~~     ^^^^^^                *******       ~~~      ^^^^^   ~~~~   
   ~~~~~         ^^                  ******      ~~~        ^^^^  ~~~~~~ 
  ~~~~~~~        ^                              ~~~~         ^^^  ~~~~~~ 
     ~~~~                                        ~~~~         ^^  ~~~~~   
    ~~~~~~~~                                     ~~~~            ~~~~~~   
      ~~~~~~~~~                                   ~~~~~~         ~~~~~   
        ~~~~~~~~~                                ~~~~~~~~~~~~~~~~~~~~     
         ~~~~~~~~~~                              ~~~~~~~~~~~~~~~~~~ ~     
     ~~~~~~~~~~~~                               ~~~~~~~~~~~~~~~~~~~~~     
     ~~~~~~~~        /v\                    ~~~~~~~~~~~~~~~~~~           
   ~~~~~~~~~~       /   \/V\              ~~~~~~~~~                       
      ~~~~~~            /   \           ~~~~~~~~~~~                       
     ~~~~~~~~~~~                       ~~~~~~~                           
         ~~~~~~~~            ~~~~~~~~~~~~~~~~                             
            ~~~~~~~~~~~~~~~~~~~~~~~~~~~                                   
               ~~~~~~~~~~~~~~~~~~~~~~~                                   
                  ~~~~~~~~~~~~                                           
                   ~~~~~                                                 

Code: [AUSKLAPPEN]
              +----------------+                     +---------------+   
              |                |                     |               |   
              |   X  X  X  X   |                     |               |   
              |                |                     |               |   
              |                +---------------------+               |   
              |                                                      |   
              |                                                      |   
              |                +----------+   +------+               |   
              |                |          |   |      |               |   
              |   X  X  X  X   |          |   |      |               |   
              |                |          |   |      |               |   
              +----------------+          |   |      +---------------+   
                                          |   |                           
  +------------------------------------+  |   |                           
  |                                    |  |   |                           
  |                                    +--+   |                           
  |                                           |                           
  |                                           |                           
  |                                    +------+                           
  |                                    |                                 
  +------------------------------------+                                 

Code: [AUSKLAPPEN]
                                                  *******                 
                                                 ************             
                                                ****      ****           
                                                ***         **           
                 ****                          ***          **           
              *********                        **           **           
            ******  *****                      **          ***           
           ****        ***                     ***          **           
           ***          ***                     *****     ****           
           **            *******                  ***     ***             
           **            **********               ***    ***             
           **            **      **** *****       ***    ***             
           ***                    ***********     ***    ***             
            ****                      **** *********    ***               
              *******                       ********   ****               
                 *****                       ******   *****               
                    **********                       ****                 
                      *********                    *****                 
                            ***                   *****                   
                             ****                 ****                   
                              ****                 **                     
                              ***                  **                     
                               **                  **                     
                               **                  **                     
                                ****             ***                     
                                 ******       *****                       
                                  ***************                         
                                         ******                           


Wie ihr seht, bleibt jeweils ziemlich viel der Phantasie des Betrachters überlassen Wink

Regeln
Mitmachen darf jeder mit BlitzMax, BlitzBasic, Blitz3D, BlitzPlus, FreeBasic und Monkey (in der Grundinstallation).
Keine Grössenbeschränkungen

Termin
Abgabe ist in vier Wochen, am 05.06.2016.

Viel Spass beim Progg'n Razz
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BYBinaryBorn - Yogurt ♫ (31.10.2018)
Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm
  • Zuletzt bearbeitet von Holzchopf am Mi, Jun 08, 2016 22:44, insgesamt einmal bearbeitet

Eingeproggt

BeitragSo, Mai 08, 2016 17:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Servus,

Weiß nicht wirklich ob ich damit teilnehmen will - aber es war eine nette "Fingerübung" für den Sonntag Nachmittag Wink
Vielleicht inspiriert es ja andere:

BlitzBasic: [AUSKLAPPEN]
Const max_size = 512
Dim map(max_size, max_size)

;TODO: Mehr bzw. "kreativere" Charsets Wink
Dim charset$(10)
charset$(0) = " "
charset$(1) = "#"
;charset(2) = " "
;charset(3) = " "

Print "Größe festlegen (max. "+max_size+" x "+max_size+")"
Global map_width, map_height

Repeat
map_width = Input("map-width: ")
Until map_width > 0 And map_width <= max_size
Repeat
map_height = Input("map-height: ")
Until map_height > 0 And map_height <= max_size

Print "Modus wählen, Möglichkeiten:"
Print "1 -> Einfaches Labyrinth"
Print "2 -> Einfache Arena (kreisförmig)"
mode = Input(": ")

char$ = Input("Zu verwendendes Zeichen (Standard #): ")
If char$ <> "" Then charset$(1) = char$

Select mode
Case 1
simple_maze()
Case 2
simple_arena()
Default
Print "Sorry, unerkannte Eingabe"
End Select

;In Datei schreiben & Datei öffnen
Local writer = WriteFile("output.txt")

write_map(writer)

CloseFile writer
Print "Fertig - Drücke Taste"
WaitKey()
ExecFile("output.txt")
End

Function simple_maze()
;"Labyrinth" mit horizontalen Wänden - jeweils an einer Stelle durchlässig
do_rect(0,0,map_width,map_height, 1)
For y = 2 To map_height - 2 Step 2
do_line(0,y, map_width,y, 1)
do_dot(Rand(2,map_width - 2), y, 0)
Next
End Function

Function simple_arena()
;Kreis mit punkt-Hindernissen darin
cx = map_width / 2
cy = map_height / 2

If map_width < map_height Then
r = map_width / 2
Else
r = map_height / 2
EndIf

do_circle(cx, cy, r, 1)

If r < 2 Then
;Abbrechen, weil in zu kleinen Kreisen können wir keine Punkte reinsetzen...
Return
EndIf

count = 0
tries = 0
Repeat
x = Rand(1, map_width - 1)
y = Rand(1, map_height - 1)

dx = cx - x
dy = cy - y
dist# = Sqr(dx*dx + dy*dy)

If dist < r Then
do_dot(x, y, 1)
count=count+1
EndIf
tries=tries+1
Until count > r Or tries > r*r
End Function

Function do_dot(x, y, index)
map(x, y) = index
End Function

Function do_line(x1,y1, x2,y2, index)
dx = x2-x1
dy = y2-y1
w# = ATan2(dy,dx)
dist# = Sqr(dx*dx + dy*dy)

For i = 0 To dist#
x = x1 + i * Cos(w#)
y = y1 + i * Sin(w#)
do_dot(x,y, index)
Next
End Function

Function do_rect(x1,y1, x2,y2, index)
do_line(x1,y1, x1,y2, index)
do_line(x1,y1, x2,y1, index)
do_line(x2,y1, x2,y2, index)
do_line(x1,y2, x2,y2, index)
End Function

Function do_circle(cx, cy, r, index)
s = 60 / r
If s < 1 Then s = 1
For w = 0 To 360 Step 5
x = cx + Cos(w) * r
y = cy + Sin(w) * r
do_dot(x, y, index)
Next
End Function

Function write_map(writer)
For y = 0 To map_height
txt$ = ""
For x = 0 To map_width
txt$ = txt$ + charset( map(x,y) )
Next
WriteLine writer, txt$
Next
End Function


Die Ausgabe erfolgt in einer Text-Datei, sprich ihr müsst den Code in einen Ordner abspeichern (falls das nicht von der IDE automatisch geschieht).

mfG, Christoph
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

Holzchopf

Meisterpacker

BeitragSo, Mai 08, 2016 21:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Pros:
  • Die Ausgabe erfolgt in eine Datei
  • Man kann die Grösse wählen
  • Verschiedene Einstellungen können vorgenommen werden


Cons:
  • Der Labyrinth-Algo scheint sehr einfältig zu arbeiten Laughing
  • Du willst dich vor der Teilnahme drücken? Das kommt nicht in Frage!


MfG
Holzchopf
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BYBinaryBorn - Yogurt ♫ (31.10.2018)
Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm

Xeres

Moderator

BeitragSa, Mai 14, 2016 17:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich experimentiere (27MB, gif) noch etwas herum. Vielleicht kommt ja noch ein brauchbarer ASCII Planet dabei heraus.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Holzchopf

Meisterpacker

BeitragSo, Mai 15, 2016 11:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Sieht schon mal nicht schlecht aus. Experimentiere ruhig noch etwas weiter Wink
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BYBinaryBorn - Yogurt ♫ (31.10.2018)
Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm

Xeres

Moderator

BeitragSo, Mai 15, 2016 22:38
Antworten mit Zitat
Benutzer-Profile anzeigen
user posted image
user posted image

Die Projektion erfordert noch etwas Feintuning, aber ich könnte mich demnächst um den wichtigeren Generator-Teil kümmern.

Edit:
Da Nachgefragt wurde: Bewegtbild (~7MB, gif)

Thunder

BeitragMo, Mai 16, 2016 19:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Wow, Xeres, coole Idee! Very Happy

Mir ist bisher nichts annähernd so interessantes eingefallen :/
Bis 05.06. geht sich vielleicht noch was aus...
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit
 

sinjin

BeitragFr, Mai 20, 2016 20:21
Antworten mit Zitat
Benutzer-Profile anzeigen
@Holzchopf hab diesen Thread gefunden Smile
@Xerxes Jo, sowas hatte ich auch im Sinn. Sehr Geil Very Happy
Hätte ich es früher gesehen, evtl hätte ich auch mitgemacht, aber ganz ehrlich, gegen Xerxes komme ich, in der Zeit, nicht an.....Ich will auch nicht, das die Zeit verlängert wird, ich war zu spät und damit basta Very Happy
Nochmal @Xerxes Das ist kein Welt-"Generator" aber du machst das....
Kann man später iwo abstimmen?

Eingeproggt

BeitragFr, Mai 20, 2016 21:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Abstimmung kommt nach der Deadline - und damit es eine Abstimmung gibt (also mind. 2 Beiträge) lass ich meinen Beitrag doch teilnehmen. Einfach nur, damit Xeres einen fairen Sieg genießen kann und keinen "geschenkten" Wink

Nebenbei "fixe" ich mit diesem Statement einen Kritikpunkt von Holzchopf. Was bedeutet dass ich 3 "pros" und nur 1 (vollkommen berechtigtes) "con" habe Cool

mfG, Christoph
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9
 

sinjin

BeitragFr, Mai 20, 2016 21:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Klar, bei einem Teilnehmer braucht niemand Abzustimmen, aber wenn kein Generator da ist, dann Stimme ich negativ, egal wie toll es aussieht Very Happy Das ist die Aufgabe oder nicht? Und ja, ich habe kurz deinen Code überflogen, finde ich gut, ich bin auch nicht auf dem Level: Fraktale...Ich würde es ganz genauso wie du machen. Warte, das ist wie ein Fraktal, nur das die Optimierung fehlt Very Happy Doch doch, immer noch besser als ein Bild (Weltkarte) zu nehmen Very Happy Absolut nichts gegen Xerxes, wie gesagt, ich würde für dich Stimmen!!!!

Holzchopf

Meisterpacker

BeitragMo, Mai 23, 2016 21:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Sehr gut, Eingeproggt! Ein Punkt ist mir noch aufgefallen: Bei grossen Mapgrössen entstehen bei der Arena manchmal Löcher...

Xeres: sehr beeindruckend. Bin schon gespannt, wie der Generator-Teil aussieht Smile
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BYBinaryBorn - Yogurt ♫ (31.10.2018)
Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm

Xeres

Moderator

BeitragSa, Mai 28, 2016 13:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich ging absolut davon aus, nur durch tolle Grafik zu bestechen...

Um den Regeln zu entsprechen, habe ich auch einen Generator eingebaut.
user posted image
user posted image

PlanetGen (zip, 1,4MB)
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

Sirrus

Betreff: Schade, zu spät gesehen....

BeitragSo, Jun 05, 2016 12:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich glaube, ich schau hier viel zu selten rein...
Ich hab eine Idee, die vielleicht mit Xeres konkurrieren könnte, nur wäre die Umsetzung doch schon etwas aufwendiger, als "eine Fingerübung für den Sonntag nachmittag" Sad

Neue Antwort erstellen


Übersicht Sonstiges Projekte

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group