PDA

Visualizza versione completa : From QBASIC to C++


wilhelm
23-04-2003, 15.45.12
Esiste un software che converta vecchi moduli QBASIC in sorgenti C++?
Avevo provato a portarli in Visual Basic ma non accetta certe istruzioni e poi il funzionamento grafico sul DOS non è quello di Windows.

P8257 WebMaster
23-04-2003, 16.09.33
.. hehehe .. in effetti la vedo un po' dura .. :D

Però da QBasic a Visual Basic .. con qualche modifichina .. ce la si fa senza troppa fatica .. poi dipende, da cosa effettivamente fa il programma.

Bye :cool:

LoryOne
23-04-2003, 17.53.09
Anch'io la vedo piuttosto dura.
Se può interessare su:

www.powerbasic.com

nella sezione Assembly è possibile scaricare un' interessantissima utility chiamata Basm v3.0 in grado di convertire un sorgente in BASIC in un sorgente Assembly x286 :cool:

E' necessario apportare alcune modifiche al sorgente BASIC prima di effettuare la conversione (come spiegato nella guida associata al programma) e in più bisogna munirsi del TASM della Borland per compilare.

Ciao:)

wilhelm
23-04-2003, 19.54.31
Vediamo allora se riuscite a darmi una mano!
Vi ricordate il vecchio nibbles?
Come faccio a farlo girare sotto Visual Basic? Quella volta bastava dirgli "PRINT" e andava bene ma adesso?

P8257 WebMaster
23-04-2003, 21.37.31
Siii :D il caro vecchio Nibbles

quante modifiche (50 - 60 vite .. :D) .. non sarebbe male fare un porting sotto windows, bisogna riscrivere l'interfaccia.. ma non sarebbe male farlo ..

Lory? .. che dici?

Bye :cool:

wilhelm
24-04-2003, 13.13.32
Io non saprei proprio da che parte cominciare.
Quale sarebbe il controllo migliore per renderlo utilizzabile sotto windows? Mica una picturebox vero?

P8257 WebMaster
24-04-2003, 14.57.38
Beh, non è male come idea .. magari utilizzando un bitmap fisso ..con un bello sfondo ..

bisogna riscrivere l'interfaccia utente, magari creando qualche user-control fatto ad hoc..

let me think ...

Bye :cool:

LoryOne
27-04-2003, 17.19.15
Originariamente inviato da wilhelm
Io non saprei proprio da che parte cominciare.
Quale sarebbe il controllo migliore per renderlo utilizzabile sotto windows? Mica una picturebox vero?

Se non ti pacciono le PictureBox puoi sempre usare le ImageBox.
Non si scappa comunque...o una o l'altra o tutte e due !

LoryOne
28-04-2003, 15.27.39
Originariamente inviato da P8257 WebMaster
Siii :D il caro vecchio Nibbles

quante modifiche (50 - 60 vite .. :D) .. non sarebbe male fare un porting sotto windows, bisogna riscrivere l'interfaccia.. ma non sarebbe male farlo ..

Lory? .. che dici?

Bye :cool:

In effetti non sarebbe male fare quel porting sotto Windows, però non ho molto tempo in questi giorni e sinceramente ho pochissima voglia di mettermici dietro.
Voglio comunque dare il mio contributo a WINME (il propositore ed anche il realizzatore del porting di Nibbles scaricabile presto, spero, da questo Forum) riportando di seguito le regole base per realizzare un qualunque gioco in ambiente Windows.

Cominciamo col dire che qualunque gioco per essere realizzato ha bisogno di un numero X di routines che debbono compiere questi 4 compiti essenziali:

1) C'è un oggetto sullo schermo che deve spostarsi
2) L'oggetto deve spostarsi all'interno di un'area prestabilita dello schermo
3) C'è bisogno di cambiare la direzione all'oggetto durante il suo spostamento
4) L'oggetto si sovrappone ad un altro determinando il punteggio.

Vediamoli ora uno per uno sommariamente:

1) L'oggetto sullo schermo può essere tranquillamente essere incluso in un controllo ImageBox.
La sua posizione sullo schermo viene settata con le due proprietà Top e Left.
Se si vuole che la posizione sia casuale allora si ricorre all' istruzione Randomize.
Il movimento dell'oggetto in un'area prestabilita (Form o PictureBox) viene modificata attraverso il metodo Move.

2) Qui ogni volta che l'oggetto si sposta è necessario prevedere la sua nuova posizione, ossia controllare se le proprietà Top,Left e Width rimangono all'interno dell'area prestabilita, altrimenti correre ai ripari.

3) Solitamente si utilizzano i tasti freccia Su,Giu,Destra e Sinistra.
All'interno dell'evento KeyPress del Form viene fornito il codice ASCII di ogni singolo tasto premuto.

4) La sovrapposizione di un oggetto ad un altro è facilmente gestibile grazie alla funzione API IntersectRect.
Private Declare Function IntersectRect Lib "user32" (lpDestRect As RECT, lpSrc1Rect As RECT, lpSrc2Rect As RECT) As Long

Se l'area rettangolare contenente l'immagine1 è compresa all'interno di quella contenente l'immagine2, significa che le due immagini hanno interagito tra loro.

Detto questo è obbligatorio assemblare il tutto in modo che le routines e gli eventi possano amalgamarsi tra loro determinando il risultato finale.

C'è un'ultima cosa da chiedersi:
Come fare a gestire il movimento dell'oggetto che deve sempre essere lo stesso fino a quando non si cambia direzione ?
Semplice...utilizzando un controllo Timer.

Con la proprietà Interval si seleziona ogni quanto tempo (in millisecondi) l'evento Timer del controllo omonimo deve verificarsi ininterrottamente.
Con la proprietà Enabled si setta se abilitare il conteggio oppure no.
Nell' evento timer si gestiscono i punti 1,4,3 mentre nell'evento KeyPress del Form si gestisce il punto 2

Allego un piccolo esempio in VB che non vuole essere nulla di pretenzioso ma spero possa essere più esplicativo ed utile di tutta 'sta pappardella.

Ciao !!

LoryOne
28-04-2003, 15.36.54
Originariamente inviato da LoryOne


........Nell' evento timer si gestiscono i punti 1,4,3 mentre nell'evento KeyPress del Form si gestisce il punto 2


Ehm, mi quoto da solo perchè ho scritto 'na caz...
Volevo dire:
Nell' evento timer si gestiscono i punti 1,2,4 mentre nell'evento KeyPress del Form si gestisce il punto 3.

Va beh, poco importa...l'importante è il concetto, no ?

wilhelm
04-05-2003, 08.17.12
E per riempire la PictureBox come si fa? Avevo trovato una volta una API senza riuscire a farla funzionare!

LoryOne
06-05-2003, 10.19.24
Dovresti utilizzare il metodo PaintPicture ed impostare le coordinate x,y dell'angolo in altro a destra dell'immagine da inserire.

Per quanto riguarda l'API...
Hai ricavato il contesto grafico (hDC) della PictureBox prima di utilizzare la funzione ?

Ricorda GetDC per ricavare il contesto grafico degli oggetti che non lo riportano come proprietà.(Y)

wilhelm
06-05-2003, 13.02.00
Ma io dovrei inserire pixel per pixel? Non so bene come funzioni!