Username
Password

Programmazione

Supporto per Linguaggi di Programmazione
Thursday, 8 September 2011, 09:37
Neles
 Davide P.
 Militante
 
L'avatar di  Neles
 
 Località: Genoa
 Età: 45
 Messaggi: 3,577

Applicativo grafico tipo battaglia navale


Supponiamo di dover creare un applicativo desktop che consenta di gestire il posizionamento iniziale delle navi di una battaglia navale:
  • ci sono diversi tipi di oggetti da mettere (navi piccoli, navi grandi, sommergibili)
  • la griglia di posizionamento ha un numero finito di posizioni occupabili
  • le navi non possono essere piazzate contigue (es. se una nave occupa la posizione A1 un'altra non può occupare A2 anche se non è toccata dalla prima nave)
  • ogni nave ha una lunghezza diversa e ha anche delle piccole sporgenze, per cui non è detto che basti uno spazio tra l'una e l'altra, ma possono volercene due se le sporgenze collidono
  • l'utente deve piazzare N navi grandi, M piccole, Q sommergibili
  • se l'utente cerca di piazzare una nave dove non può perché ne tocca un'altra allora gli viene segnalato con un warning
  • l'utente può togliere una nave già messa
  • ogni nave ha un punto principale (chiamiamolo baricentro), per cui per sapere com'è posizionata una nave basta dire che il suo baricentro è in H4 ed è girata di 0/90/180/270 gradi
  • quando ha finito creo una lista delle navi inserite con triple del tipo nave - posizione baricentro - rotazione
  • l'utente deve avere una lista delle navi ancora da inserire e la griglia con le navi attualmente posizionate
  • le navi sono parametriche: c'è il cacciatorpediniere e l'utente deve inserire quella lunga 7.0, 7.1, 7.2, ... 11.9, 12 (ovvero sono parecchie lunghezze possibili per ogni tipo)

Non avendo vincoli in partenza sul linguaggio da usare (credo che sia preferibile usare C# o Java), voi conoscete delle librerie possibilmente gratuite che possano aiutare per quelle operazioni?
Tanto per capirci, mi serve che in quel linguaggio si possa:
  • creare una forma parametrica (il cacciatorpediniere lungo N), composta da curve e linee
  • traslare/ruotare quella nave implichi traslare/ruotare un singolo oggetto, non che mi debba occupare di ogni sua componente
  • saper gestire le collisioni tra forme (sapendo che l'approssimazione a rettangoli di una nave non va bene a causa delle sporgenze delle navi)
  • avere un'immagine gestita "a layer" (la griglia di fondo con ogni sua forma messa)
  • poter togliere e aggiungere in modo "semplice" la forma di una nave dalla griglia composta
  • sarebbe carino far comparire la forma che si sta inserendo dentro al cursore, col cursore che punta al baricentro della nave, in modo da dar meglio l'idea all'utente dell'occupazione in griglia che comporterebbe il mettere la nave proprio in quel punto
  • (ma qui probabilmente si va nella fantascienza) sarebbe tanto bello poter importare una forma da un disegno dxf/dwg per creare la forma corrispondente nel linguaggio dell'applicativo, così per creare una nuova nave non dovrei impazzire a creare da zero "a manina" il tracciato di quella nave

Purtroppo non ho mai lavorato allo sviluppo di applicativi con tale parte grafica, per cui sono completamente tabula rasa.
Ho letto qualcosa riguardante WPF, ma non so se sia la soluzione migliore...
Idee, consigli, soluzioni?

Come al solito ringrazio anticipatamente per le risposte.
__________________
There is no dark side of the Moon really... matter of fact it's all dark.

Chuck Norris non bestemmia, è Dio che compie una metamorfosi per accontentarlo
    Rispondi Citando Rispondi
Thursday, 8 September 2011, 16:19
gillesvilleneuve
 GillesVilleneuve
 Utente Appassionato
 
L'avatar di  gillesvilleneuve
 
 Messaggi: 1,446

Non vorrei scoraggiarti, ma credo che come prima applicazione sia un tantino complessa...
    Rispondi Citando Rispondi
Commenti a questo messaggio
  Duilio: Ha fatto di peggio
Thursday, 8 September 2011, 17:13
palin
 Giuseppe
 Militante
 
L'avatar di  palin
 
 Località: Albano Laziale
 Età: 44
 Messaggi: 4,246

Domanda, ma la gestione della risoluzione è vettoriale o display-dependant, cioè per intenderci le sagome sono composte da pixel sono vettori e quindi potenzialmente infinitamente complesse con curve e controcurve per le "sporgenze" e le "rientranze"?

Perché nel primo caso credo che l'infinita letteratura sui giochi e le collisioni fra sprite siano estremamente utili... nel secondo caso o si approssima oppure la matematica per le intersezioni di curve più o meno complesse è piuttosto complicata, anche se poi il "baricentro" è fisso in una casella...
__________________

Palin -- <palin AT email DOT it>

Democracy doesn't mean “my ignorance is just as good as your knowledge.” - Isaac Asimov
draco dormiens nunquam titillandus
    Rispondi Citando Rispondi
Thursday, 8 September 2011, 20:16
Neles
 Davide P.
 Militante
 
L'avatar di  Neles
 
 Località: Genoa
 Età: 45
 Messaggi: 3,577

@Gilles: sono d'accordo, ma come si dice... ce tocca.

@Palin: le sagome sono formate da una poligonale contenente anche curve in un numero sufficientemente piccolo di tratti (sull'ordine della decina, direi).
Lo scopo della mia domanda era quello di fare una piccola scrematura tra tutti i linguaggi/framework a disposizione nel caso esistessero già delle librerie free "o poco di più" in cui riesco a creare una forma da un insieme di punti (parto da P1, retta sino a P2, arco di cerchio sino a P3 ecc.) e in cui ci siano dei metodi per cui avendo due forme F1 ed F2 posso fare if( overlay(F1, F2) ) then alert('Ciccio, non puoi mettere F2 lì') et similia.

Supponendo che ogni forma abbia ben fissati un baricentro e delle misure massime) il calcolo sulle collisioni sia "facilmente" riconducibile ad una possibile sovrapposizione di rettangoli su un asse solo (X o Y che sia) che linguaggio/framework mi consigliereste per gestire la parte grafica di questo applicativo?
__________________
There is no dark side of the Moon really... matter of fact it's all dark.

Chuck Norris non bestemmia, è Dio che compie una metamorfosi per accontentarlo
    Rispondi Citando Rispondi
Thursday, 8 September 2011, 20:22
palin
 Giuseppe
 Militante
 
L'avatar di  palin
 
 Località: Albano Laziale
 Età: 44
 Messaggi: 4,246

Sì ma mi pare di capire che il tuo bisogno è strettamente vettoriale... per cui librerie tipo SDL non vanno bene per lo meno non nella parte pixmap. Prova a vedere Cairo per la visualizzazione (forse ha anche qualcosa per la gestione).
__________________

Palin -- <palin AT email DOT it>

Democracy doesn't mean “my ignorance is just as good as your knowledge.” - Isaac Asimov
draco dormiens nunquam titillandus
    Rispondi Citando Rispondi
Commenti a questo messaggio
  Neles: Grazie, molto utile
Rispondi Invia Nuova Discussione


Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 visitatori)
 

Thread già visto da:
Pocket, RomeoKnight, SanK, foul64, Duilio, Carson, palin, anita, BRAVO 2, SatRider, Foxes, ale82x, Neles, Attilio, davide72, TW
Strumenti Discussione Cerca in questa Discussione
Cerca in questa Discussione:

Ricerca Avanzata
Modalità Visualizzazione

top Regole di scrittura
Tu non puoi inserire messaggi
Tu non puoi rispondere ai messaggi
Tu non puoi inviare allegati
Tu non puoi modificare i tuoi messaggi

codice vB è Attivo
Smilies è Attivo
[IMG] il codice è Attivo
Il codice HTML è Attivo

Se hai problemi, contattaci


Visite Totali Posts: 81.268.840
Tutti gli Orari sono GMT +1. Attualmente sono le 07:14.

iGroup Black
Powered by vBulletin Versione 3.5.6
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
Traduzione italiana a cura di: Enzo-Staff-VbulletinItalia.it
 
2000, 2012 © Visiva Group