Kaynağa Gözat

created a file with the speed gaming experience

pull/5250/head
Visvamitha 1 gün önce
ebeveyn
işleme
769aa6ce05
1 değiştirilmiş dosya ile 104 ekleme ve 0 silme
  1. +104
    -0
      game.py

+ 104
- 0
game.py Dosyayı Görüntüle

@ -0,0 +1,104 @@
from raylibpy import *
import math
# Grid setup
ROWS = 3
COLS = 3
TILE_SIZE = 120
MARGIN = 20
SWIPE_MIN_DISTANCE = 30.0 # Minimum distance to detect swipe
# Board: 0 means empty tile, others are numbered
board = []
def init_board():
global board
board = [i + 1 for i in range(ROWS * COLS - 1)] + [0] # 1..8 + 0 empty
def idx_row(idx):
return idx // COLS
def idx_col(idx):
return idx % COLS
def draw_board():
for i, value in enumerate(board):
r, c = idx_row(i), idx_col(i)
x = MARGIN + c * TILE_SIZE
y = MARGIN + r * TILE_SIZE
if value == 0:
draw_rectangle(x, y, TILE_SIZE - 4, TILE_SIZE - 4, DARKGRAY)
else:
draw_rectangle(x, y, TILE_SIZE - 4, TILE_SIZE - 4, LIGHTGRAY)
draw_text(str(value), x + TILE_SIZE // 2 - 10, y + TILE_SIZE // 2 - 12, 24, BLACK)
def find_empty():
return board.index(0)
def move_empty(direction):
empty = find_empty()
er, ec = idx_row(empty), idx_col(empty)
tr, tc = er, ec
if direction == 0: tr = er - 1 # up
elif direction == 1: tr = er + 1 # down
elif direction == 2: tc = ec - 1 # left
elif direction == 3: tc = ec + 1 # right
if tr < 0 or tr >= ROWS or tc < 0 or tc >= COLS:
return # out of bounds
target = tr * COLS + tc
board[empty], board[target] = board[target], board[empty]
def main():
screenW = MARGIN * 2 + COLS * TILE_SIZE
screenH = MARGIN * 2 + ROWS * TILE_SIZE
init_window(screenW, screenH, b"Puzzle Swipe Test (Python)")
set_target_fps(60)
init_board()
# Swipe variables
touch_start = Vector2(0, 0)
touch_end = Vector2(0, 0)
touching = False
while not window_should_close():
# Detect touch or mouse drag
if is_mouse_button_pressed(MOUSE_LEFT_BUTTON):
touching = True
touch_start = get_mouse_position()
if touching and is_mouse_button_released(MOUSE_LEFT_BUTTON):
touching = False
touch_end = get_mouse_position()
dx = touch_end.x - touch_start.x
dy = touch_end.y - touch_start.y
dist = math.sqrt(dx * dx + dy * dy)
if dist >= SWIPE_MIN_DISTANCE:
# Determine swipe direction
if abs(dx) > abs(dy):
if dx > 0:
move_empty(3) # right
else:
move_empty(2) # left
else:
if dy > 0:
move_empty(1) # down
else:
move_empty(0) # up
begin_drawing()
clear_background(RAYWHITE)
draw_text(b"Swipe or drag to move empty tile", 10, 10, 18, DARKGRAY)
draw_board()
end_drawing()
close_window()
if __name__ == "__main__":
main()

Yükleniyor…
İptal
Kaydet