Clone snake in C e ncurses

Condividi con noi i tuoi progetti e guide personali
Rispondi
nierro
Little John
Messaggi: 1019
Iscritto il: 19 novembre 2009, 17:51
Architettura: x86_64 (64bit)

Clone snake in C e ncurses

Messaggio da nierro » 24 agosto 2014, 15:24

Ciao a tutti!

Visto che in questi giorni non avevo granché da fare, mi sono divertito a scrivere un semplice clone di snake in C e ncurses.
Il pacchetto è già in aur: https://aur.archlinux.org/packages/snake-ncurses/ .
Il codice è disponibile su git: https://github.com/FedeDP/Snake .
Come sempre, critiche al codice sono ben accette!

Uno screenshot d'obbligo: https://raw.githubusercontent.com/FedeD ... /snake.png .
Spero che a qualcuno possa interessare (mmh ho i miei dubbi :) )

Buona domenica a tutti!

Avatar utente
KleinerMann
Moderatore
Messaggi: 3784
Iscritto il: 8 gennaio 2011, 20:59
Architettura: x86_64 (64bit)

Re: Clone snake in C e ncurses

Messaggio da KleinerMann » 24 agosto 2014, 17:27

Bello... ;D
Ho notato che tenendo premuta una della frecce il serpente si blocca... è voluto? :)
Arch Linux - AwesomeWM

nierro
Little John
Messaggi: 1019
Iscritto il: 19 novembre 2009, 17:51
Architettura: x86_64 (64bit)

Re: Clone snake in C e ncurses

Messaggio da nierro » 24 agosto 2014, 20:05

Direi che non è voluto ahahah dannazione, debug debug debug!!
Devo capire dove sia il problema...

Avatar utente
smlb
Amministratore
Messaggi: 573
Iscritto il: 17 aprile 2013, 12:40
Architettura: x86_64 (64bit)
Località: /dev/null
Contatta:

Re: Clone snake in C e ncurses

Messaggio da smlb » 24 agosto 2014, 23:15

nierro: io implementerei anche i keybind di vim {h,j,k,l}... Se e` in curses tanto vale mettere anche questa chicca.

PS: su G+ gia` ho clonato il repo e ho giocato un paio di volte. Mi piace!
Prima di aprire thread ed effettuare altre azioni sul forum, leggere attentamente: forum etiquette

Consultare la wiki prima di postare sul forum - inserire sempre informazioni attinenti alle problematiche riscontrate

nierro
Little John
Messaggi: 1019
Iscritto il: 19 novembre 2009, 17:51
Architettura: x86_64 (64bit)

Re: Clone snake in C e ncurses

Messaggio da nierro » 24 agosto 2014, 23:27

Ok ho trovato dov'è il problema, ma mi son reso conto che è stato un effetto involontario di una scelta implementativa, e non la cambierò :)
Il fatto è che nello switch getch (https://github.com/FedeDP/Snake/blob/ma ... ake.c#L242) controllo che la direzione della testa del serpente non sia contraria o identica al pulsante premuto, e in tal caso non faccio nulla, ossia breako lo switch. Motivo per cui, evidentemente, se tieni premuto "destra", al primo ciclo cambi direzione e non c'è problema, ma poi rimani nel "case KEY_RIGHT", ma con direzione destra. E quindi continua all'infinito a breakare (bloccando la UI).
Ma d'altra parte togliere il check sulla "direzione identica del tasto premuto" creerebbe un altro problema che vorrei evitare. :(

nierro
Little John
Messaggi: 1019
Iscritto il: 19 novembre 2009, 17:51
Architettura: x86_64 (64bit)

Re: Clone snake in C e ncurses

Messaggio da nierro » 24 agosto 2014, 23:30

@smlb: potrei, ma tutto sommato non cambia assolutamente nulla, e penso che più persone siano abituate con le frecce :)
Son contento ti piaccia! Installalo da aur! :D

nierro
Little John
Messaggi: 1019
Iscritto il: 19 novembre 2009, 17:51
Architettura: x86_64 (64bit)

Re: Clone snake in C e ncurses

Messaggio da nierro » 16 settembre 2014, 17:02

Nell'ultima versione (3.3) ho fixato il bug di cui parlava KleinerMann...effettivamente non era così complicato da fixare :D

Avatar utente
quellen
Arciere Provetto
Messaggi: 397
Iscritto il: 20 maggio 2014, 14:24
Architettura: x86 (32Bit)

Re: Clone snake in C e ncurses

Messaggio da quellen » 16 settembre 2014, 18:19

bello. però il serpente è troppo veloce, io lo rallenterei un po'.

nierro
Little John
Messaggi: 1019
Iscritto il: 19 novembre 2009, 17:51
Architettura: x86_64 (64bit)

Re: Clone snake in C e ncurses

Messaggio da nierro » 16 settembre 2014, 22:17

Nelle versioni precedenti facevo scegliere il livello all'inizio...ma per me questa velocità è giusta: più lento annoia e fino ad almeno una quarantina di frutti mangiati, il serpente è troppo corto per creare problemi; invece com'è ora, bisogna comunque stare un minimo attenti anche dopo già una quindicina di frutti mangiati. Rallentarlo è questione di cambiare un numerino nel sorgente comunque ;)

Rispondi