Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Challenges
#44
I figured it was important after my little b*tch moment recently that i participate so I made AI write this!!! It took longer to correct it than if id done it myself and still its not what i wanted....but its close! It's inspired by the arecibo disk...I hope it's okay...I'm not sorry i used AI as its something im very much into to expand/improve my coding.

Code: (Select All)

' Main program
SCREEN _NEWIMAGE(1024, 768, 32) ' Create a high-resolution window
COLOR _RGB32(255, 255, 255) ' Set default text color to white
CLS

DIM message AS STRING

' Get user input
LOCATE 1, 1
PRINT "Enter your message to convert into a binary crop circle:"
INPUT message

' Clear screen for graphics
CLS


' Draw the alien face and the main encompassing circle
CALL DrawAlienFace(300, 384)
CIRCLE (750, 384), 250, _RGB(250, 0, 0) ' The main circle boundary

' Draw the text as binary blocks inside the large circle
CALL TextToBinaryBlocks(message)

' Keep the program running until a key is pressed
DO: LOOP UNTIL INKEY$ <> ""

END





SUB TextToBinaryBlocks (message$)
  DIM binaryString AS STRING
  DIM totalBits AS INTEGER
  DIM i AS INTEGER
  DIM j AS INTEGER
  DIM centerX AS INTEGER, centerY AS INTEGER
  DIM lineCount AS INTEGER
  DIM lineBits AS INTEGER
  DIM radiusStep AS SINGLE
  DIM bitAngleStep AS DOUBLE
  DIM lineRadius AS SINGLE
  DIM angle AS DOUBLE
  DIM colorCode AS LONG
  DIM blockSize AS INTEGER
  DIM blockAngularWidth AS DOUBLE

  centerX = 750
  centerY = _HEIGHT / 2

  ' Concatenate the binary representations of all characters
  FOR i = 1 TO LEN(message$)
    binaryString = binaryString + GetBinary(MID$(message$, i, 1))
  NEXT i

  totalBits = LEN(binaryString)
  lineCount = 5
  lineBits = INT(totalBits / lineCount) ' Number of bits per circle line
  IF totalBits MOD lineCount > 0 THEN lineBits = lineBits + 1

  radiusStep = 20 ' Distance between concentric circles

  ' Loop through the number of lines
  FOR i = 1 TO lineCount
    lineRadius = 100 + (i - 1) * radiusStep ' Start with an inner radius and step out
    angle = 0

    ' Adjust the block size (radial height) based on the radius
    blockSize = 5 + (i - 1) * 3

    ' The desired angular width of each block in radians (assuming constant size at a reference radius)
    blockAngularWidth = .05 ' Adjust this constant for desired width

    ' Calculate the angular step needed to fit all blocks without overlapping
    bitAngleStep = (2 * 3.14159) / lineBits

    ' Loop through the bits for the current line
    FOR j = 1 TO lineBits
      IF (i - 1) * lineBits + j <= totalBits THEN
        ' Set the color based on the binary digit
        IF MID$(binaryString, (i - 1) * lineBits + j, 1) = "1" THEN
          colorCode = _RGB(255, 0, 0) ' Solid Red
        ELSE
          colorCode = _RGB(255, 70, 70) ' Light Red
        END IF

        ' Draw a filled, rotated block at the calculated position
        CALL DrawFilledRotatedBlock(centerX, centerY, lineRadius, angle, blockSize, blockAngularWidth, colorCode)
      END IF

      angle = angle + bitAngleStep ' Increment angle for the next bit
    NEXT j
  NEXT i
END SUB

' ==========================================================
' Subroutine to draw a filled, rotated block
SUB DrawFilledRotatedBlock (centerX AS INTEGER, centerY AS INTEGER, radius AS SINGLE, angle AS DOUBLE, blockSize AS INTEGER, blockAngleWidth AS DOUBLE, colorCode AS LONG)
  DIM x1 AS INTEGER, y1 AS INTEGER
  DIM x2 AS INTEGER, y2 AS INTEGER

  ' Use a loop to draw lines from the inner radius to the outer radius, filling the segment
  FOR i = 0 TO blockSize - 1 STEP 1
    x1 = centerX + ((radius + i) * COS(angle - blockAngleWidth))
    y1 = centerY + ((radius + i) * SIN(angle - blockAngleWidth))
    x2 = centerX + ((radius + i) * COS(angle + blockAngleWidth))
    y2 = centerY + ((radius + i) * SIN(angle + blockAngleWidth))
    LINE (x1, y1)-(x2, y2), colorCode
  NEXT i
END SUB


' ==========================================================
' Function to convert a single character to its 8-bit binary string
FUNCTION GetBinary$ (char AS STRING)
  DIM ascValue AS INTEGER
  DIM binaryResult AS STRING
  DIM i AS INTEGER

  ascValue = ASC(char)
  binaryResult = ""

  FOR i = 7 TO 0 STEP -1
    IF (ascValue AND (2 ^ i)) THEN
      binaryResult = binaryResult + "1"
    ELSE
      binaryResult = binaryResult + "0"
    END IF
  NEXT i

  GetBinary = binaryResult
END FUNCTION

' ==========================================================
' Subroutine to draw a basic alien face
SUB DrawAlienFace (centerX AS INTEGER, centerY AS INTEGER)
  ' Head (ellipse)
  CIRCLE (centerX, centerY - 50), 100, _RGB(0, 100, 0), , , 1.5
  PAINT (centerX, centerY - 50), _RGB(0, 100, 0)

  ' Eyes (black ellipses with white glints)
  CIRCLE (centerX - 40, centerY - 60), 20, _RGB(0, 0, 0), , , 0.5
  PAINT (centerX - 40, centerY - 60), _RGB(0, 0, 0)
  CIRCLE (centerX + 40, centerY - 60), 20, _RGB(0, 0, 0), , , 0.5
  PAINT (centerX + 40, centerY - 60), _RGB(0, 0, 0)

  ' Glints
  CIRCLE (centerX - 35, centerY - 65), 3, _RGB(255, 255, 255)
  PAINT (centerX - 35, centerY - 65), _RGB(255, 255, 255)
  CIRCLE (centerX + 45, centerY - 65), 3, _RGB(255, 255, 255)
  PAINT (centerX + 45, centerY - 65), _RGB(255, 255, 255)

  ' Mouth (simple line)
  LINE (centerX - 20, centerY + 30)-(centerX + 20, centerY + 30), _RGB(0, 0, 0)

  ' Neck (shaded rectangle)
  LINE (centerX - 25, centerY + 50)-(centerX + 25, centerY + 80), _RGB(0, 100, 0), BF
END SUB


As always, Happy coding!

Unseen
Reply


Messages In This Thread
Challenges - by bplus - 04-27-2022, 05:21 PM
RE: Challenges - by Pete - 04-27-2022, 05:33 PM
RE: Challenges - by bplus - 04-27-2022, 05:38 PM
RE: Challenges - by Pete - 04-27-2022, 06:00 PM
RE: Challenges - by bplus - 04-27-2022, 06:08 PM
RE: Challenges - by bplus - 04-28-2022, 01:17 AM
RE: Challenges - by Dav - 04-28-2022, 01:26 AM
RE: Challenges - by Pete - 04-28-2022, 01:59 AM
RE: Challenges - by bplus - 05-04-2022, 01:36 AM
RE: Challenges - by Pete - 05-04-2022, 01:51 AM
RE: Challenges - by bplus - 05-04-2022, 01:57 AM
RE: Challenges - by Pete - 05-04-2022, 02:22 AM
RE: Challenges - by bplus - 05-04-2022, 04:10 PM
RE: Challenges - by bplus - 06-18-2022, 01:10 PM
RE: Challenges - by SierraKen - 06-18-2022, 11:32 PM
RE: Challenges - by bplus - 06-19-2022, 01:09 AM
RE: Challenges - by bplus - 03-26-2024, 11:37 PM
RE: Challenges - by CharlieJV - 03-30-2024, 12:02 AM
RE: Challenges - by SMcNeill - 03-27-2024, 12:20 AM
RE: Challenges - by SMcNeill - 03-27-2024, 12:32 AM
RE: Challenges - by bplus - 03-27-2024, 01:24 AM
RE: Challenges - by bplus - 03-30-2024, 02:53 PM
RE: Challenges - by CharlieJV - 03-30-2024, 03:39 PM
RE: Challenges - by bplus - 03-31-2024, 01:33 PM
RE: Challenges - by Petr - 03-31-2024, 02:00 PM
RE: Challenges - by SMcNeill - 03-31-2024, 02:18 PM
RE: Challenges - by Petr - 03-31-2024, 02:23 PM
RE: Challenges - by bplus - 03-31-2024, 03:28 PM
RE: Challenges - by bplus - 06-18-2024, 10:42 PM
RE: Challenges - by SMcNeill - 06-19-2024, 04:32 AM
RE: Challenges - by SMcNeill - 06-19-2024, 04:45 AM
RE: Challenges - by KingLeonidas - 06-19-2024, 09:42 AM
RE: Challenges - by bplus - 06-19-2024, 01:59 PM
RE: Challenges - by bplus - 06-21-2024, 07:31 PM
RE: Challenges - by bplus - 06-23-2024, 03:07 PM
RE: Challenges - by bplus - 08-14-2025, 03:10 PM
RE: Challenges - by dbox - 08-15-2025, 10:14 PM
RE: Challenges - by bplus - 08-16-2025, 01:02 AM
RE: Challenges - by dbox - 08-30-2025, 04:25 PM
RE: Challenges - by bplus - 08-30-2025, 07:30 PM
RE: Challenges - by dbox - 08-30-2025, 10:36 PM
RE: Challenges - by madscijr - 08-31-2025, 12:34 AM
RE: Challenges - by bplus - 08-31-2025, 04:33 AM
RE: Challenges - by Unseen Machine - 09-02-2025, 08:00 PM
RE: Challenges - by bplus - 09-02-2025, 08:20 PM
RE: Challenges - by Unseen Machine - 09-02-2025, 08:39 PM
RE: Challenges - by bplus - 09-02-2025, 09:41 PM
RE: Challenges - by bplus - 11-06-2025, 05:37 PM
RE: Challenges - Christmas Tree - by 2112 - 11-06-2025, 07:36 PM
RE: Challenges - by bplus - 11-06-2025, 08:47 PM
RE: Challenges - by bplus - 11-07-2025, 03:19 PM
RE: Challenges - by 2112 - 11-07-2025, 06:58 PM
RE: Challenges - by bplus - 11-07-2025, 07:50 PM
RE: Challenges - by madscijr - 11-08-2025, 09:20 PM
RE: Challenges - by NakedApe - 11-08-2025, 02:32 AM
RE: Challenges - by Dav - 11-09-2025, 12:45 AM
RE: Challenges - by bplus - 11-09-2025, 12:48 AM
RE: Challenges - by bplus - 11-09-2025, 01:25 AM
RE: Challenges - by Dav - 11-09-2025, 01:01 PM
RE: Challenges - by bplus - 11-09-2025, 02:14 PM
RE: Challenges - by 2112 - 11-09-2025, 02:58 PM
RE: Challenges - by Dav - 11-10-2025, 02:56 AM
RE: Challenges - by bplus - 11-10-2025, 03:01 PM
RE: Challenges - by Dav - 11-16-2025, 11:59 PM
RE: Challenges - by Petr - 11-17-2025, 01:18 AM
RE: Challenges - by dbox - 11-17-2025, 03:56 AM
RE: Challenges - by Dav - 11-17-2025, 04:10 AM
RE: Challenges - by dbox - 11-17-2025, 02:29 PM
RE: Challenges - by Dav - 11-17-2025, 06:06 PM
RE: Challenges - by dbox - 11-17-2025, 08:12 PM
RE: Challenges - by NakedApe - 11-17-2025, 06:28 PM
RE: Challenges - by bplus - 11-17-2025, 09:28 PM
RE: Challenges - by Dav - 11-18-2025, 02:42 AM
RE: Challenges - by bplus - 11-18-2025, 08:20 AM
RE: Challenges - by Dav - 12-31-2025, 05:33 PM
RE: Challenges - by NakedApe - 12-31-2025, 10:04 PM
RE: Challenges - by Dav - 12-31-2025, 10:28 PM
RE: Challenges - by Dav - 12-31-2025, 10:39 PM
RE: Challenges - by dbox - 01-01-2026, 05:25 AM
RE: Challenges - by Pete - 12-31-2025, 11:11 PM
RE: Challenges - by Dav - 01-01-2026, 02:35 AM
RE: Challenges - by Pete - 01-01-2026, 03:07 AM
RE: Challenges - by bplus - 01-01-2026, 01:36 PM

Possibly Related Threads…
Thread Author Replies Views Last Post
  Rosetta Code Challenges bplus 15 3,444 04-29-2024, 03:03 AM
Last Post: bplus

Forum Jump:


Users browsing this thread: 1 Guest(s)