Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - disegnare scacchiera
Forum - C# / VB.NET - disegnare scacchiera

Avatar
crybot (Member)
Pro


Messaggi: 115
Iscritto: 13/09/2011

Segnala al moderatore
Postato alle 23:34
Domenica, 09/10/2011
il titolo dice quasi tutto, ma ecco quello che chiedo:
ho, da pochissimo, cominciato a studiare il C#, ma vengo da un discreto livello di C++, quindi non mi e` stato difficile apprendere la sintassi di base. come mio primo progetto ho deciso di creare un interprete di scacchi con varie funzioni, ma il problema che e` sorto e` stato come disegnare la scacchiera nel form. siccome non so proprio come fare non ho saputo neanche trovare niente su google... ho pensato pero` di associare varie immagini alle case della scacchiera, ma sono punto e a capo. mi basterebbe una dritta su come, di solito, un problema del genere viene risolto. poi mi documentero` da solo.

Edit:

grazie a tutti delle risposte, e scusate per il ritardo al rispondere a questa discussione, ma, per motivi vari, sono stato molto impegnato.

vorrei, oltre a ringraziarvi delle risposte molto esaurienti, descrivere piu` approfonditamente cio` che realmente dovrebbe fare il mio programma:

come interprete di scacchi, dovrebbe prendere in input una serie di comandi, di default sara` possbile analizzare una serie di movimenti in notazione algebrica (per chi non sapesse cosa sia: http://it.wikipedia.org/wiki/Notazione_algebrica_%28scacch ..., ma piu` avanti spero di poter effettuare piu` controlli, con differenti standard. questa era una parentesi che volevo aprire per spiegare che il programma non e` affatto un gioco, non e` necessario quindi aggiornare la scacchiera piu` volte durante l'esecuzione del programma. essa dovra` essere generata soltanto alla fine dell'analisi della partita fornita in input dall'utente, non dovra` essere interattiva (l'input sara` fornito tramite testo) ne` modificabile direttamente dall'utente.
spiegare questo e` stato necessario per la mia successiva domanda:
ho capito che per creare una scacchiera dovrei appoggiarmi al controllo chiamato Gridpanel, avevo intenzione quindi di inserire un immagine di sfondo, come mi avete suggerito. l'ultimo problema sta nel generare le 64 case della scacchiera e nel come modificarle alla fine dell'analisi. ho pensato di inserire 64 controlli Image nelle celle del gridpanel, ma non sono sicuro che sia la scelta migliore.
qualora lo fosse e` meglio inserirle manualmente, tramite XAML, o tramite codice?
ho inoltre provato a sovrapporre due immagini, la seconda ovviamente senza sfondo, ma questa va a sovrascrivere la precedente... e questo e` un problema.
essendo veramente a digiuno di GUI e non avendo mai affrontato il discorso prima di questo topic, vi pregherei di rispondere senza dare niente per scontato, in quanto per me (almeno per adesso) niente lo e`.
grazie a tutti ;)

P.S. non ho fretta in quanto penso che definire la scacchiera sia l'ultima cosa che faro`. per adesso sto scrivendo sulla mia lavagna (ebbene si ho una lavagna u.u) le varie classi che implementero`, la loro gerarchia ecc.ecc. ancora in alto mare quindi, ma voglio che questo progetto venga bene e ben approcciato alle OOP, che sto attualmente sudiando assieme al linguaggio C#.

P.P.S.

ri-rigrazie :)


Ultima modifica effettuata da crybot il 15/10/2011 alle 23:57
PM
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Up
2
Down
V
Segnala al moderatore
Postato alle 23:46
Domenica, 09/10/2011

se lo fai in wpf c'è già pronto il gridpanel:

http://www.wpftutorial.net/LayoutProperties.html

il resto vien da se :)

PM
Avatar
Renny (Normal User)
Expert


Messaggi: 231
Iscritto: 30/07/2011

Up
2
Down
V
Segnala al moderatore
Postato alle 11:04
Lunedì, 10/10/2011
Esiste anche lo stesso controllo per le applicazioni Windows Form normali..
SI chiama TableLayoutPanel, e permette di disegnare una specie di tabella, dove specifichi tu quante colonne e righe. Le celle così create poi fanno da contenitore per altri controlli.. puoi metterci dentro delle pictureBox che poi riempirai con delle immagini.. Magari potresti creare con qualche programma di grafica dei quadrati, bianchi e neri fatti magari con delle texture particolari, per fare tipo effetto marmo. E aggiungere un effetto "rilievo" ai singoli quadrati, così sembrerà che la scacchiera ha le case separate da un solco, tipo effetto rilievo, proprio..
Basta solo un po' di fantasia.
Buon lavoro!:k:

PM
Avatar
gigisoft (Member)
Guru


Messaggi: 696
Iscritto: 11/10/2008

Up
2
Down
V
Segnala al moderatore
Postato alle 11:21
Lunedì, 10/10/2011
Salve,

io feci un programma simile, prima in Delphi e poi in VB6, e in entrambi i casi usai un'immagine "preconfezionata" da me ( con il buon vecchio Paint :-| ) da mettere rispettivamente in una TImage o in una PictureBox.

P.S.
se ne avessi bisogno, la versione in delphi l'ho messa su Pierotofy col nome di ChessGame

Ciao. :k:

Luigi

Ultima modifica effettuata da gigisoft il 10/10/2011 alle 11:26
ringrazio tutti per le risposte, ho aggiornato il post principale con le ultime richieste, e scusate tanto per il ritardo :) - crybot - 15/10/11 22:29
PM
Avatar
gigisoft (Member)
Guru


Messaggi: 696
Iscritto: 11/10/2008

Up
0
Down
V
Segnala al moderatore
Postato alle 13:00
Domenica, 16/10/2011
Ciao,

per la sovrapposizione io in ChessGame usavo le immagini dei pezzi impostando lo sfondo trasparente, ma era in Delphi, e feci lo stesso in VB6 ( non ricordo come... non ho il codice sottomano ), dovrebbe esserci qualcosa di analogo in .Net...

Ciao. :k:

Luigi

mi e` sembrato quindi capire che utilizzare 64 controlli Image per inserire i pezzi e un controllo Image per la scacchiera, sovrapponendoli, e` un metodo valido... mi rimane comunque un quesito: i 64 controlli Image, sarebbe meglio inserirli uno ad uno manualmente, tramite XAML o tramite codice?, - crybot - 16/10/11 13:32
io lo feci tramite codice, con XAML non saprei nemmeno come fare, non lo conosco, e quindi non so se sarebbe meglio o peggio - gigisoft - 18/10/11 11:53
PM