Giter Club home page Giter Club logo

snake-fury's People

Contributors

glyn avatar juliendehos avatar lsmor avatar slowdive- avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

snake-fury's Issues

running results in `Segmentation fault: 11`

After applying the fixes from #4 , I tried to run my solution (and then yours to make sure the same problem occurs):

$ cabal run snake-fury -- 10 10 5

This is the output:

Resolving dependencies...
Build profile: -w ghc-9.2.4 -O1
In order, the following will be built (use -v for more details):
 - snake-fury-0.1.0.0 (lib) (file src/GameState.hs changed)
 - snake-fury-0.1.0.0 (exe:snake-fury) (dependency rebuilt)
./snake-fury.cabal has been changed. Re-configuring with most recently used
options. If this fails, please run configure manually.
Configuring library for snake-fury-0.1.0.0..
Preprocessing library for snake-fury-0.1.0.0..
Building library for snake-fury-0.1.0.0..
[2 of 5] Compiling RenderState      ( src/RenderState.hs, /Users/liwoxa/Desktop/Repositories/snake-fury/dist-newstyle/build/aarch64-osx/ghc-9.2.4/snake-fury-0.1.0.0/build/RenderState.o, /Users/liwoxa/Desktop/Repositories/snake-fury/dist-newstyle/build/aarch64-osx/ghc-9.2.4/snake-fury-0.1.0.0/build/RenderState.dyn_o )
[3 of 5] Compiling GameState        ( src/GameState.hs, /Users/liwoxa/Desktop/Repositories/snake-fury/dist-newstyle/build/aarch64-osx/ghc-9.2.4/snake-fury-0.1.0.0/build/GameState.o, /Users/liwoxa/Desktop/Repositories/snake-fury/dist-newstyle/build/aarch64-osx/ghc-9.2.4/snake-fury-0.1.0.0/build/GameState.dyn_o )
[4 of 5] Compiling EventQueue       ( src/EventQueue.hs, /Users/liwoxa/Desktop/Repositories/snake-fury/dist-newstyle/build/aarch64-osx/ghc-9.2.4/snake-fury-0.1.0.0/build/EventQueue.o, /Users/liwoxa/Desktop/Repositories/snake-fury/dist-newstyle/build/aarch64-osx/ghc-9.2.4/snake-fury-0.1.0.0/build/EventQueue.dyn_o ) [GameState changed]
[5 of 5] Compiling Initialization   ( src/Initialization.hs, /Users/liwoxa/Desktop/Repositories/snake-fury/dist-newstyle/build/aarch64-osx/ghc-9.2.4/snake-fury-0.1.0.0/build/Initialization.o, /Users/liwoxa/Desktop/Repositories/snake-fury/dist-newstyle/build/aarch64-osx/ghc-9.2.4/snake-fury-0.1.0.0/build/Initialization.dyn_o ) [GameState changed]
ld: warning: -undefined dynamic_lookup may not work with chained fixups
./snake-fury.cabal has been changed. Re-configuring with most recently used
options. If this fails, please run configure manually.
Configuring executable 'snake-fury' for snake-fury-0.1.0.0..
Preprocessing executable 'snake-fury' for snake-fury-0.1.0.0..
Building executable 'snake-fury' for snake-fury-0.1.0.0..
[2 of 2] Compiling Main             ( app/Main.hs, /Users/liwoxa/Desktop/Repositories/snake-fury/dist-newstyle/build/aarch64-osx/ghc-9.2.4/snake-fury-0.1.0.0/x/snake-fury/build/snake-fury/snake-fury-tmp/Main.o )
Linking /Users/liwoxa/Desktop/Repositories/snake-fury/dist-newstyle/build/aarch64-osx/ghc-9.2.4/snake-fury-0.1.0.0/x/snake-fury/build/snake-fury/snake-fury ...
Segmentation fault: 11

When running again, I just get:

Up to date
Segmentation fault: 11

Any ideas?

No incomplete pattern warnings

I am not getting warnings about incomplete pattern matches in refactor 1. I have added the following:

data RenderMessage = RenderBoard DeltaBoard | GameOver | RenderScore Int deriving Show

When I build, this is the output:

snake-fury % cabal build
Warning: Unknown/unsupported 'ghc' version detected (Cabal 3.8.1.0 supports
'ghc' version < 9.6): /Users/jbecca/.ghcup/bin/ghc is version 9.6.2
Build profile: -w ghc-9.6.2 -O1
In order, the following will be built (use -v for more details):
 - snake-fury-0.1.0.0 (lib) (first run)
 - snake-fury-0.1.0.0 (exe:snake-fury) (first run)
Configuring library for snake-fury-0.1.0.0..
Preprocessing library for snake-fury-0.1.0.0..
Building library for snake-fury-0.1.0.0..
[1 of 5] Compiling Paths_snake_fury ( /Users/jbecca/projects/snake-fury/dist-newstyle/build/aarch64-osx/ghc-9.6.2/snake-fury-0.1.0.0/build/autogen/Paths_snake_fury.hs, /Users/jbecca/projects/snake-fury/dist-newstyle/build/aarch64-osx/ghc-9.6.2/snake-fury-0.1.0.0/build/Paths_snake_fury.o, /Users/jbecca/projects/snake-fury/dist-newstyle/build/aarch64-osx/ghc-9.6.2/snake-fury-0.1.0.0/build/Paths_snake_fury.dyn_o )
[2 of 5] Compiling RenderState      ( src/RenderState.hs, /Users/jbecca/projects/snake-fury/dist-newstyle/build/aarch64-osx/ghc-9.6.2/snake-fury-0.1.0.0/build/RenderState.o, /Users/jbecca/projects/snake-fury/dist-newstyle/build/aarch64-osx/ghc-9.6.2/snake-fury-0.1.0.0/build/RenderState.dyn_o )
[3 of 5] Compiling GameState        ( src/GameState.hs, /Users/jbecca/projects/snake-fury/dist-newstyle/build/aarch64-osx/ghc-9.6.2/snake-fury-0.1.0.0/build/GameState.o, /Users/jbecca/projects/snake-fury/dist-newstyle/build/aarch64-osx/ghc-9.6.2/snake-fury-0.1.0.0/build/GameState.dyn_o )
[4 of 5] Compiling EventQueue       ( src/EventQueue.hs, /Users/jbecca/projects/snake-fury/dist-newstyle/build/aarch64-osx/ghc-9.6.2/snake-fury-0.1.0.0/build/EventQueue.o, /Users/jbecca/projects/snake-fury/dist-newstyle/build/aarch64-osx/ghc-9.6.2/snake-fury-0.1.0.0/build/EventQueue.dyn_o )
[5 of 5] Compiling Initialization   ( src/Initialization.hs, /Users/jbecca/projects/snake-fury/dist-newstyle/build/aarch64-osx/ghc-9.6.2/snake-fury-0.1.0.0/build/Initialization.o, /Users/jbecca/projects/snake-fury/dist-newstyle/build/aarch64-osx/ghc-9.6.2/snake-fury-0.1.0.0/build/Initialization.dyn_o )
Configuring executable 'snake-fury' for snake-fury-0.1.0.0..
Preprocessing executable 'snake-fury' for snake-fury-0.1.0.0..
Building executable 'snake-fury' for snake-fury-0.1.0.0..
[1 of 2] Compiling Main             ( app/Main.hs, /Users/jbecca/projects/snake-fury/dist-newstyle/build/aarch64-osx/ghc-9.6.2/snake-fury-0.1.0.0/x/snake-fury/build/snake-fury/snake-fury-tmp/Main.o )
[2 of 2] Compiling Paths_snake_fury ( /Users/jbecca/projects/snake-fury/dist-newstyle/build/aarch64-osx/ghc-9.6.2/snake-fury-0.1.0.0/x/snake-fury/build/snake-fury/autogen/Paths_snake_fury.hs, /Users/jbecca/projects/snake-fury/dist-newstyle/build/aarch64-osx/ghc-9.6.2/snake-fury-0.1.0.0/x/snake-fury/build/snake-fury/snake-fury-tmp/Paths_snake_fury.o )
[3 of 3] Linking /Users/jbecca/projects/snake-fury/dist-newstyle/build/aarch64-osx/ghc-9.6.2/snake-fury-0.1.0.0/x/snake-fury/build/snake-fury/snake-fury

I have tried adding the following options to the cabal file to force output of these warnings:
ghc-options: -threaded -rtsopts -Wall "-with-rtsopts --io-manager=native" -fwarn-incomplete-patterns -Wincomplete-patterns

Additional info: Here are the versions of cabal, ghc, and ghci I am using
GHC 9.6.2
Cabal 3.10.1.0

As proof that the rest of my code is working and the non exhaustive pattern really exists:

λ> updateRenderState initial_board (RenderScore 5)
*** Exception: /Users/jbecca/projects/snake-fury/src/RenderState.hs:(85,34)-(87,59): Non-exhaustive patterns in case

I also tried with GHC version 9.4.5 and cabal version 3.6.2.0, which also did not warn me. FYI, I tried creating some intentional non-exhaustive matches in other projects and I do get compiler warnings.

KB input on windows does not work

Hi! Thanks for the challenge! I am rather curious about these tasks.

There is a problem with reading keyboard input on windows in the tui version of the game. The function writeUserInput is expecting a VT sequence for arrows - yet by default windows terminal (current backend for all windows-native terminals) does not send them, you need to set up stdin properly for that (in case you need more context than you would ever need to know on that subject =), there is an effort to bring brick/vty to windows here: jtdaugherty/vty#251) TLDR: reading interactive user input on windows as VT sequences is a hassle.

Then again, if we put ourselves in a posix-like terminal (e.g. MobaXterm, it does send VT sequences for arrows), we are inviting all possible problems with io-manager =( hReady behaves rather strangely in that scenario, line buffering is not up to the task, and so on.

I propose to add `wasd/hjkl' as additional aliases for arrows, this does not break the principle of least surprise. And then

  • force native io-manager as ghc rts option; should be a neutral change on linux/macos and positive on ghc-8 on windows
  • skip hReady by a CPP pragma in getKey and warn the user in Readme that arrow keys would not necessarily work on windows.

Without hReady checks all characters will arrive properly one by one, and since a command is just one character, we avoid all parsing troubles.

Other alternatives would be

  • migrate to haskeline (I am still not sure about arrow keys)
  • implement proper windows logic to handle virtual terminal sequences (CPP pragmas, maintenance burden)
  • migrate to vty/brick once there is a release for windows (ETA: unknown, this autumn at best)

Cheers!

could not resolve dependencies

When trying to install with cabal, dependencies resolution fails:

Resolving dependencies...
Error: cabal: Could not resolve dependencies:
[__0] trying: snake-fury-0.1.0.0 (user goal)
[__1] next goal: base (dependency of snake-fury)
[__1] rejecting: base-4.16.3.0/installed-4.16.3.0 (conflict: snake-fury =>
base^>=4.14)
[__1] skipping: base-4.17.0.0, base-4.16.4.0, base-4.16.3.0, base-4.16.2.0,
base-4.16.1.0, base-4.16.0.0, base-4.15.1.0, base-4.15.0.0 (has the same
characteristics that caused the previous version to fail: excluded by
constraint '^>=4.14' from 'snake-fury')
[__1] rejecting: base-4.14.3.0, base-4.14.2.0, base-4.14.1.0, base-4.14.0.0,
base-4.13.0.0, base-4.12.0.0, base-4.11.1.0, base-4.11.0.0, base-4.10.1.0,
base-4.10.0.0, base-4.9.1.0, base-4.9.0.0, base-4.8.2.0, base-4.8.1.0,
base-4.8.0.0, base-4.7.0.2, base-4.7.0.1, base-4.7.0.0, base-4.6.0.1,
base-4.6.0.0, base-4.5.1.0, base-4.5.0.0, base-4.4.1.0, base-4.4.0.0,
base-4.3.1.0, base-4.3.0.0, base-4.2.0.2, base-4.2.0.1, base-4.2.0.0,
base-4.1.0.0, base-4.0.0.0, base-3.0.3.2, base-3.0.3.1 (constraint from
non-upgradeable package requires installed instance)
[__1] fail (backjumping, conflict set: base, snake-fury)
After searching the rest of the dependency tree exhaustively, these were the
goals I've had most trouble fulfilling: base, snake-fury

Fixed by removing all of the ^ symbols from the snake-fury.cabal file and updating the resolver url in stack.yaml to:

https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/lts/20/7.yaml

With this I got the VSCode extension to work too.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.