UNPKG

@deveckad/snakegame

Version:

The snake game.

100 lines (87 loc) 2.19 kB
#!/usr/bin/env node // const express = require('express') // const socketio = require('socket.io') // const open = require('open') // const http = require('http') // const path = require('path') // const inquirer = require('inquirer') // const fs = require('fs') // const app = express() // const server = http.createServer(app) // const io = socketio(server) // const port = process.env.PORT || 8000 import express from 'express' import { Server } from 'socket.io' import open from 'open' import { createServer } from 'http' import { join, dirname } from 'path' import inquirer from 'inquirer' import fs from 'fs' import os from 'os' import { fileURLToPath } from 'url' const __dirname = dirname(fileURLToPath(import.meta.url)) const app = express() const server = createServer(app) // const io = socketio(server) const io = new Server(server) const port = process.env.PORT || 8000 const dev = false const homedir = os.homedir() const snakedir = join(homedir, '.snakegame') const scorefile = join(snakedir, 'hiscore.txt') await askToOpenURL() async function askToOpenURL() { if (dev) { return handleOpenURL(false) } const answers = await inquirer.prompt({ name: 'open_url', type: 'list', message: 'Do you want to open the app in web browser?', choices: ['Yes', 'No'] }) return handleOpenURL(answers.open_url == 'Yes') } async function handleOpenURL(openURL) { app.use(express.static(join(__dirname, 'public'))) server.listen(port, () => { if (openURL) { open(`http://localhost:${port}`) } console.log(`Listening on port ${port}`) }) } io.on('connection', (socket) => { if (!fs.existsSync(snakedir)) { fs.mkdirSync( snakedir //, err => { // if (err) { // err.printStackTrace(); // } // }) // } ) } if (!fs.existsSync(scorefile)) { fs.writeFileSync( scorefile, JSON.stringify({ score: -1, name: '' }) ) } socket.on('gethiscore', () => { socket.emit('rethiscore', JSON.parse(fs.readFileSync(scorefile))) }) socket.on('newhiscore', (data) => { var { score, name } = JSON.parse(data) fs.writeFileSync( scorefile, JSON.stringify({ score, name }) ) }) })