How to create a board game aliensoldier Member Posts: 79 Threads: 15 Joined: Nov 2023 Reputation: 2 02-24-2024, 01:44 PM (02-23-2024, 09:06 PM)Marcus Wrote: (02-23-2024, 04:34 PM)aliensoldier Wrote: I'm going to share the code I've made because I'm at an impasse and I don't know how to continue. I have three problems: 1-there is a cursor that moves around the board and if you stand on top of a player's piece and press "z" it picks it up and you can drop it on another square with the "x" key, but the problem is that it drops it anywhere box and I want it to only be able to be dropped in the dark boxes and I don't know how to do it. 2-when I grab a player token you can grab other player tokens at the same time and I only want it to grab one token at a time but I haven't been able to do it. 3-When I have a player token I should only be able to move one square per turn but it can be moved to any square, as could be done. I made two posts but deleted them now, after looking up the rules of Checkers. Hopefully this code can help you: Code:```constant GRID = 8 ' number of rows and columns. constant SQUARE = 53 ' size of each square. set window "test", 640, 480 set redraw off ' create 8x8 array filled with zeroes. board = fill(0, GRID, GRID) ' place pieces. for y = 0 to 2  for x = 0 to GRID - 1     if (y + x)%2 = 1  board[x][y] = 1     if (GRID - 1 - y + x)%2 = 1  board[x][GRID - 1 - y] = 2 next ' center board in window. boardX = (width(primary) - GRID*SQUARE)/2 boardY = (height(primary) - GRID*SQUARE)/2 ' set to 1 or 2 when a piece has been picked up. holdingPiece = 0 ' original position of picked up piece. originalPieceX = 0 originalPieceY = 0 ' loop until user presses escape. while not keydown(KEY_ESCAPE, true)     ' check if mouse is inside board.     mx = mousex()     my = mousey()     gridX = mx - boardX     gridY = my - boardY     if gridX >= 0 and gridX < GRID*SQUARE and gridY >= 0 and gridY < GRID*SQUARE         ' convert to grid coordinates.         gridX = int(gridX/SQUARE)         gridY = int(gridY/SQUARE)         ' click?         if mousebutton(0, true)             ' not holding a piece?             if not holdingPiece                 ' any piece at that position?                 if board[gridX][gridY]                     ' store information about the piece.                     holdingPiece = board[gridX][gridY]                     originalPieceX = gridX                     originalPieceY = gridY                     ' remove piece from board.                     board[gridX][gridY] = 0                 endif             ' already holding piece.             else                 ' spot empty?                 if not board[gridX][gridY]                     ' same position or valid distance for move? here both players can move up and                     ' down. only "kings" should be able to do that.                     dx = |gridX - originalPieceX|                     dy = |gridY - originalPieceY|                     if dx = 0 and dy = 0 or dx = 1 and dy = 1                         ' put piece down.                         board[gridX][gridY] = holdingPiece                         holdingPiece = 0                     endif                 endif             endif         endif     endif     ' draw.     set color 0, 0, 0     cls             ' draw board.     for y = 0 to GRID - 1         for x = 0 to GRID - 1             ' this formula gives a chess pattern.             if (y + x)%2  set color 64, 64, 64             else  set color 208, 208, 208             draw rect boardX + x*SQUARE, boardY + y*SQUARE, SQUARE, SQUARE, true             ' any piece?             if board[x][y]                 DrawPiece(board[x][y], boardX + (x + 0.5)*SQUARE, boardY + (y + 0.5)*SQUARE)             endif         next     next         ' Draw picked up piece.     if holdingPiece  DrawPiece(holdingPiece, mx, my)         redraw     fwait 60 wend function DrawPiece(player, x, y)     if player = 1  set color 240, 240, 240     else  set color 32, 32, 32     draw ellipse x, y, SQUARE/2 - 4, SQUARE/2 - 4, true     set color 0, 0, 0     draw ellipse x, y, SQUARE/2 - 4, SQUARE/2 - 4, false endfunc``` As it is now, both players can always move backwards or forwards diagonally. But according to the rules, only "kings" can move backwards. board[x][y] is now either: 0 = empty, 1 = player 1 piece or 2 = player 2 piece. I guess you can simply add two more values: 3 = player 1 king piece and 4 = player 2 king piece, and make it so that only kings can move backwards. Edit  And I'm sorry for not basing my code on yours. I'm just showing you how I would do it myself, and hopefully it can help you modify your own code Thanks Marcus, I'll try to adapt it to my code. « Next Oldest | Next Newest »