Yep. Everything works well now. I will submit it after I add the inventory menus and the ability to use some items.Oh cool! Also, you based your sprites off Celestrium’s which were in turn based off Terraria’s sprites? Okay.Yes. My player sprites are based off of swan's sprites for Celestrium. My world generator generates worlds in about a minute, and the game can properly load maps. You can see the ice biome in my profile picture.The rest of my game should be pretty easy from here, I finished world generation/loading.Have you finished saving yet?
Spooky Scary Programming Contest 2018
Root / Site Discussion / [.]
I assume that SIM.3D is ok, to use right? (http://smilebasicsource.com/page?pid=1053 Key = HEAEP3). I have been playing with that one a little bit.
What about code you find and port over from the internet. Something like say https://www.youtube.com/watch?v=Y37-gB83HKE Javidx9's maze generation algorithm for example? Good? Bad?
By the way, if anyone is interested, the code I ported over and a screen shot is right below. Anyone else a fan?
OPTION STRICT VAR SCREEN_W = 400 VAR SCREEN_H = 240 VAR CONSOLE_W = 200 'DIFFERENT NUMBERS FOR VAR CONSOLE_H = 120 'INTEGER CHARACTER SIZE VAR CHAR_W = SCREEN_W / CONSOLE_W VAR CHAR_H = SCREEN_H / CONSOLE_H VAR MAZE_W, MAZE_H, MAZE[0], VISITED_CELLS VAR CELL_PATH_N = &H01 VAR CELL_PATH_E = &H02 VAR CELL_PATH_S = &H04 VAR CELL_PATH_W = &H08 VAR CELL_VISITED = &H10 '16 VAR PATH_W = 3 'UNLIKE THE VIDEO I WILL JUST PUSH 'TWO ENTRIES PER XY PAIR. JUST NEED TO 'REMEMBER TO POP AND PUSH IN REVERSE ORDER 'PUSH X,Y THEN POP Y,X VAR STACK[0] 'Maze algorithm adapted from the video '"Programming Mazes" by javidx9 on Youtube 'https://www.youtube.com/watch?v=Y37-gB83HKE ' MAIN END DEF MAIN VAR B, GAME_OVER = FALSE, T1, T2, DT VAR PAGE_DRAW = 0, PAGE_SHOW = 1 ACLS GPAGE PAGE_SHOW, PAGE_DRAW ON_USER_CREATE T2 = MILLISEC - 16 WHILE !GAME_OVER T1 = T2 T2 = MILLISEC DT = T2 - T1 B = BUTTON() ON_USER_UPDATE DT, B IF (B AND #X) != 0 THEN GAME_OVER = TRUE SWAP PAGE_SHOW, PAGE_DRAW GPAGE PAGE_SHOW, PAGE_DRAW 'VSYNC WEND END DEF ON_USER_CREATE VAR I MAZE_W = 50 MAZE_H = 30 'Allocate maze 'Remove if too many WHILE LEN(MAZE) > (MAZE_W * MAZE_H) I = POP(MAZE) WEND 'Add if too small WHILE LEN(MAZE) < (MAZE_W * MAZE_H) PUSH MAZE, 0 WEND 'Now zero everything out FOR I = 0 TO (MAZE_W * MAZE_H) - 1 MAZE[I] = 0 NEXT I 'Clear out the stack WHILE LEN(STACK) > 0 I = POP(STACK) WEND 'Add the starting position PUSH STACK, 0 'Start at 0, 0 PUSH STACK, 0 'Mark it visited MAZE[0] = CELL_VISITED VISITED_CELLS = 1 END DEF ON_USER_UPDATE DT, B VAR I, J, PX, PY, X, Y, CLR VAR NEIGHBORS[0] VAR NORTH = 1 VAR EAST = 2 VAR SOUTH = 3 VAR WEST = 4 VAR NEXT_DIR 'Do Maze Algorithm IF VISITED_CELLS < (MAZE_W * MAZE_H) THEN 'Peek top of stack for current x, y Y = STACK[LEN(STACK) - 1] X = STACK[LEN(STACK) - 2] 'Step 1: Create a set of unvisited neighbors ' 'North neighbor IF Y > 0 THEN IF (MAZE[((Y - 1) * MAZE_W) + X] AND CELL_VISITED) == 0 THEN PUSH NEIGHBORS, NORTH ENDIF ENDIF 'East neighbor IF X < MAZE_W - 1 THEN IF (MAZE[(Y * MAZE_W) + X + 1] AND CELL_VISITED) == 0 THEN PUSH NEIGHBORS, EAST ENDIF ENDIF 'South neighbor IF Y < MAZE_H - 1 THEN IF (MAZE[((Y + 1) * MAZE_W) + X] AND CELL_VISITED) == 0 THEN PUSH NEIGHBORS, SOUTH ENDIF ENDIF 'West neighbor IF X > 0 THEN IF (MAZE[(Y * MAZE_W) + X - 1] AND CELL_VISITED) == 0 THEN PUSH NEIGHBORS, WEST ENDIF ENDIF IF LEN(NEIGHBORS) > 0 THEN 'Choose one available neighbor at random NEXT_DIR = NEIGHBORS[RND(LEN(NEIGHBORS))] 'Create a path between the neighbor and 'the current cell IF NEXT_DIR == NORTH THEN MAZE[Y * MAZE_W + X] = (MAZE[Y * MAZE_W + X] OR CELL_PATH_N) MAZE[(Y - 1) * MAZE_W + X] = (MAZE[(Y - 1) * MAZE_W + X] OR CELL_PATH_S) PUSH STACK, X PUSH STACK, Y - 1 ELSEIF NEXT_DIR == EAST THEN MAZE[Y * MAZE_W + X] = (MAZE[Y * MAZE_W + X] OR CELL_PATH_E) MAZE[Y * MAZE_W + X + 1] = (MAZE[Y * MAZE_W + X + 1] OR CELL_PATH_W) PUSH STACK, X + 1 PUSH STACK, Y ELSEIF NEXT_DIR == SOUTH THEN MAZE[Y * MAZE_W + X] = (MAZE[Y * MAZE_W + X] OR CELL_PATH_S) MAZE[(Y + 1) * MAZE_W + X] = (MAZE[(Y + 1) * MAZE_W + X] OR CELL_PATH_N) PUSH STACK, X PUSH STACK, Y + 1 ELSEIF NEXT_DIR == WEST THEN MAZE[Y * MAZE_W + X] = (MAZE[Y * MAZE_W + X] OR CELL_PATH_W) MAZE[Y * MAZE_W + X - 1] = (MAZE[Y * MAZE_W + X - 1] OR CELL_PATH_E) PUSH STACK, X - 1 PUSH STACK, Y ELSE ENDIF 'New cell 'Mark new cell visited and increase count 'Peek top of stack for current x, y Y = STACK[LEN(STACK) - 1] X = STACK[LEN(STACK) - 2] 'Mark it visited MAZE[Y * MAZE_W + X] = (MAZE[Y * MAZE_W + X] OR CELL_VISITED) VISITED_CELLS = VISITED_CELLS + 1 ELSE Y = POP(STACK) X = POP(STACK) ENDIF ENDIF 'IF VISITED_CELLS < MAZE_W * MAZE_H THEN RETURN GCLS FOR J = 0 TO MAZE_H - 1 FOR I = 0 TO MAZE_W - 1 IF MAZE[J * MAZE_W + I] AND CELL_VISITED THEN CLR = #WHITE ELSE CLR = #BLUE ENDIF IF I == X && J == Y AND VISITED_CELLS < MAZE_W * MAZE_H THEN CLR = #LIME ENDIF DRAW_CELL I * (PATH_W + 1), J * (PATH_W + 1), CLR 'South wall IF (MAZE[J * MAZE_W + I] AND CELL_PATH_S) != 0 THEN CLR = #WHITE ELSE CLR = #BLACK ENDIF FOR PX = 0 TO PATH_W - 1 DRAW_PIXEL I * (PATH_W + 1) + PX, J * (PATH_W + 1) + PATH_W, CLR NEXT PX 'East wall IF (MAZE[J * MAZE_W + I] AND CELL_PATH_E) != 0 THEN CLR = #WHITE ELSE CLR = #BLACK ENDIF FOR PY = 0 TO PATH_W - 1 DRAW_PIXEL I * (PATH_W + 1) + PATH_W, J * (PATH_W + 1) + PY, CLR NEXT PX NEXT I NEXT J END DEF DRAW_PIXEL X, Y, CLR GFILL X * CHAR_W, Y * CHAR_H, (X + 1) * CHAR_W - 1, (Y + 1) * CHAR_H - 1, CLR END DEF DRAW_CELL X, Y, CLR GFILL X * CHAR_W, Y * CHAR_H, (X + 1 + PATH_W) * CHAR_W - CHAR_W - 1, (Y + 1 + PATH_W) * CHAR_H - CHAR_H - 1, CLR END
I assume that SIM.3D is ok, to use right? (http://smilebasicsource.com/page?pid=1053 Key = HEAEP3). I have been playing with that one a little bit. What about code you find and port over from the internet. Something like say https://www.youtube.com/watch?v=Y37-gB83HKE Javidx9's maze generation algorithm for example? Good? Bad? By the way, if anyone is interested, the code I ported over and a screen shot is right below. Anyone else a fan?Content
OPTION STRICT VAR SCREEN_W = 400 VAR SCREEN_H = 240 VAR CONSOLE_W = 200 'DIFFERENT NUMBERS FOR VAR CONSOLE_H = 120 'INTEGER CHARACTER SIZE VAR CHAR_W = SCREEN_W / CONSOLE_W VAR CHAR_H = SCREEN_H / CONSOLE_H VAR MAZE_W, MAZE_H, MAZE[0], VISITED_CELLS VAR CELL_PATH_N = &H01 VAR CELL_PATH_E = &H02 VAR CELL_PATH_S = &H04 VAR CELL_PATH_W = &H08 VAR CELL_VISITED = &H10 '16 VAR PATH_W = 3 'UNLIKE THE VIDEO I WILL JUST PUSH 'TWO ENTRIES PER XY PAIR. JUST NEED TO 'REMEMBER TO POP AND PUSH IN REVERSE ORDER 'PUSH X,Y THEN POP Y,X VAR STACK[0] 'Maze algorithm adapted from the video '"Programming Mazes" by javidx9 on Youtube 'https://www.youtube.com/watch?v=Y37-gB83HKE ' MAIN END DEF MAIN VAR B, GAME_OVER = FALSE, T1, T2, DT VAR PAGE_DRAW = 0, PAGE_SHOW = 1 ACLS GPAGE PAGE_SHOW, PAGE_DRAW ON_USER_CREATE T2 = MILLISEC - 16 WHILE !GAME_OVER T1 = T2 T2 = MILLISEC DT = T2 - T1 B = BUTTON() ON_USER_UPDATE DT, B IF (B AND #X) != 0 THEN GAME_OVER = TRUE SWAP PAGE_SHOW, PAGE_DRAW GPAGE PAGE_SHOW, PAGE_DRAW 'VSYNC WEND END DEF ON_USER_CREATE VAR I MAZE_W = 50 MAZE_H = 30 'Allocate maze 'Remove if too many WHILE LEN(MAZE) > (MAZE_W * MAZE_H) I = POP(MAZE) WEND 'Add if too small WHILE LEN(MAZE) < (MAZE_W * MAZE_H) PUSH MAZE, 0 WEND 'Now zero everything out FOR I = 0 TO (MAZE_W * MAZE_H) - 1 MAZE[I] = 0 NEXT I 'Clear out the stack WHILE LEN(STACK) > 0 I = POP(STACK) WEND 'Add the starting position PUSH STACK, 0 'Start at 0, 0 PUSH STACK, 0 'Mark it visited MAZE[0] = CELL_VISITED VISITED_CELLS = 1 END DEF ON_USER_UPDATE DT, B VAR I, J, PX, PY, X, Y, CLR VAR NEIGHBORS[0] VAR NORTH = 1 VAR EAST = 2 VAR SOUTH = 3 VAR WEST = 4 VAR NEXT_DIR 'Do Maze Algorithm IF VISITED_CELLS < (MAZE_W * MAZE_H) THEN 'Peek top of stack for current x, y Y = STACK[LEN(STACK) - 1] X = STACK[LEN(STACK) - 2] 'Step 1: Create a set of unvisited neighbors ' 'North neighbor IF Y > 0 THEN IF (MAZE[((Y - 1) * MAZE_W) + X] AND CELL_VISITED) == 0 THEN PUSH NEIGHBORS, NORTH ENDIF ENDIF 'East neighbor IF X < MAZE_W - 1 THEN IF (MAZE[(Y * MAZE_W) + X + 1] AND CELL_VISITED) == 0 THEN PUSH NEIGHBORS, EAST ENDIF ENDIF 'South neighbor IF Y < MAZE_H - 1 THEN IF (MAZE[((Y + 1) * MAZE_W) + X] AND CELL_VISITED) == 0 THEN PUSH NEIGHBORS, SOUTH ENDIF ENDIF 'West neighbor IF X > 0 THEN IF (MAZE[(Y * MAZE_W) + X - 1] AND CELL_VISITED) == 0 THEN PUSH NEIGHBORS, WEST ENDIF ENDIF IF LEN(NEIGHBORS) > 0 THEN 'Choose one available neighbor at random NEXT_DIR = NEIGHBORS[RND(LEN(NEIGHBORS))] 'Create a path between the neighbor and 'the current cell IF NEXT_DIR == NORTH THEN MAZE[Y * MAZE_W + X] = (MAZE[Y * MAZE_W + X] OR CELL_PATH_N) MAZE[(Y - 1) * MAZE_W + X] = (MAZE[(Y - 1) * MAZE_W + X] OR CELL_PATH_S) PUSH STACK, X PUSH STACK, Y - 1 ELSEIF NEXT_DIR == EAST THEN MAZE[Y * MAZE_W + X] = (MAZE[Y * MAZE_W + X] OR CELL_PATH_E) MAZE[Y * MAZE_W + X + 1] = (MAZE[Y * MAZE_W + X + 1] OR CELL_PATH_W) PUSH STACK, X + 1 PUSH STACK, Y ELSEIF NEXT_DIR == SOUTH THEN MAZE[Y * MAZE_W + X] = (MAZE[Y * MAZE_W + X] OR CELL_PATH_S) MAZE[(Y + 1) * MAZE_W + X] = (MAZE[(Y + 1) * MAZE_W + X] OR CELL_PATH_N) PUSH STACK, X PUSH STACK, Y + 1 ELSEIF NEXT_DIR == WEST THEN MAZE[Y * MAZE_W + X] = (MAZE[Y * MAZE_W + X] OR CELL_PATH_W) MAZE[Y * MAZE_W + X - 1] = (MAZE[Y * MAZE_W + X - 1] OR CELL_PATH_E) PUSH STACK, X - 1 PUSH STACK, Y ELSE ENDIF 'New cell 'Mark new cell visited and increase count 'Peek top of stack for current x, y Y = STACK[LEN(STACK) - 1] X = STACK[LEN(STACK) - 2] 'Mark it visited MAZE[Y * MAZE_W + X] = (MAZE[Y * MAZE_W + X] OR CELL_VISITED) VISITED_CELLS = VISITED_CELLS + 1 ELSE Y = POP(STACK) X = POP(STACK) ENDIF ENDIF 'IF VISITED_CELLS < MAZE_W * MAZE_H THEN RETURN GCLS FOR J = 0 TO MAZE_H - 1 FOR I = 0 TO MAZE_W - 1 IF MAZE[J * MAZE_W + I] AND CELL_VISITED THEN CLR = #WHITE ELSE CLR = #BLUE ENDIF IF I == X && J == Y AND VISITED_CELLS < MAZE_W * MAZE_H THEN CLR = #LIME ENDIF DRAW_CELL I * (PATH_W + 1), J * (PATH_W + 1), CLR 'South wall IF (MAZE[J * MAZE_W + I] AND CELL_PATH_S) != 0 THEN CLR = #WHITE ELSE CLR = #BLACK ENDIF FOR PX = 0 TO PATH_W - 1 DRAW_PIXEL I * (PATH_W + 1) + PX, J * (PATH_W + 1) + PATH_W, CLR NEXT PX 'East wall IF (MAZE[J * MAZE_W + I] AND CELL_PATH_E) != 0 THEN CLR = #WHITE ELSE CLR = #BLACK ENDIF FOR PY = 0 TO PATH_W - 1 DRAW_PIXEL I * (PATH_W + 1) + PATH_W, J * (PATH_W + 1) + PY, CLR NEXT PX NEXT I NEXT J END DEF DRAW_PIXEL X, Y, CLR GFILL X * CHAR_W, Y * CHAR_H, (X + 1) * CHAR_W - 1, (Y + 1) * CHAR_H - 1, CLR END DEF DRAW_CELL X, Y, CLR GFILL X * CHAR_W, Y * CHAR_H, (X + 1 + PATH_W) * CHAR_W - CHAR_W - 1, (Y + 1 + PATH_W) * CHAR_H - CHAR_H - 1, CLR END
I know for sure Sim.3D is fine, but I don’t know about the other stuffThey should both be fine since they've been posted online for others to use
I just decided to make XL worlds available for all 3DS systems.Wait, so were you trying to make 3DS XL-exclusive worlds for your game or something? They both have the same screen resolution, so all programs look and perform the same between the two systems. You can try making New 3DS-exclsuive levels by using the HARDWARE variable (0 on 3DS, 1 on New 3DS), although there's really no point to it.
I know. That's why I made it not n3DS exclusive. Also, the game has awesome music, thanks to RWIIUG0129.I just decided to make XL worlds available for all 3DS systems.Wait, so were you trying to make 3DS XL-exclusive worlds for your game or something? They both have the same screen resolution, so all programs look and perform the same between the two systems. You can try making New 3DS-exclsuive levels by using the HARDWARE variable (0 on 3DS, 1 on New 3DS), although there's really no point to it.
Sorry, looks like I won't have time to work on anything this week. I wanted to make something, but I am pretty much already out of free time until next week.
I may not be able to participate this time...
If I had started later and my motivation for completely coding an emulator stayed this month I'd have a 16 fake computer running an operating system uploaded as my entry but oh well
Why did the week i was going to actually implement the game part of my game since i finished the main mechanic of it have to be the week where i literally have 4 or 5 school projects due ahhhG
Why did the week i was going to actually implement the game part of my game since i finished the main mechanic of it have to be the week where i literally have 4 or 5 school projects due ahhhGJust do them before that week. Or is that this week? (duh) Or were they assigned the same week? I have to write a 7 page legal brief for history, but that's not due until December.