add play button

This commit is contained in:
Ole Morud
2022-08-25 20:45:40 +02:00
parent 1bd5085b91
commit d7cb2b2145
3 changed files with 25 additions and 4 deletions

View File

@@ -11,6 +11,7 @@ import {
DEFAULT_TILE_COLOR,
SELECTED_TILE_COLOR,
SIDEBAR_WIDTH,
STEP_DELAY,
TILE_SIZE
} from "../const"
import { iterate, newProgram, ProgramState, resetProgram } from "../interpreter"
@@ -20,20 +21,39 @@ function Board() {
const [program, setProgram] = useState<ProgramState>(newProgram())
const [playing, setPlaying] = useState<boolean>(false)
const intervalRef = useRef<NodeJS.Timer>()
useEffect(() => {
if (playing) {
intervalRef.current = setInterval(() => {
step()
console.log("a")
}, STEP_DELAY)
} else {
clearInterval(intervalRef.current)
console.log(program)
}
}, [playing])
useEffect(() => {
if (program.done) {
console.log("done")
const x = structuredClone(program)
resetProgram(x)
setPlaying(false)
x.done = false
setProgram(x)
}
}, [program])
const step = () => {
const x = structuredClone(program)
//const x = structuredClone(program)
//iterate(x)
setProgram((prog) => {
const x = structuredClone(prog)
iterate(x)
setProgram(x)
return x
})
}
const handleDrop = (
@@ -94,7 +114,7 @@ function Board() {
{/* BOARD */}
{program.board.map((row, rowNo): JSX.Element => {
return (
<Grid key={key++} container columns={BOARD_WIDTH} sx={{ width: `${5 * 12}rem` }}>
<Grid key={key++} container columns={BOARD_WIDTH} sx={{ width: `${6 * BOARD_WIDTH}rem` }}>
{row.map((tile, colNo): JSX.Element => {
return (
<div

View File

@@ -4,5 +4,6 @@ export const DEFAULT_TILE_COLOR = "0xFFFFFF"
export const BOARD_WIDTH = 10
export const BOARD_HEIGHT = 10
export const TILE_SIZE = 5
export const STEP_DELAY = 300
export default {}

View File

@@ -57,7 +57,7 @@ export const resetProgram = (program: ProgramState) => {
})*/
program.direction = Direction.Right
program.done = false
program.done = true
program.instructionPointer.x = 0
program.instructionPointer.y = 0
program.output = ""