Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione HONOR Magic V6: spessore record e super batteria. È lui il fold da battere?
Recensione HONOR Magic V6: spessore record e super batteria. È lui il fold da battere?
HONOR Magic V6 è arrivato in Italia a 2.299,90 euro con una promessa precisa: unire 4 mm di spessore da aperto (8,75 mm chiuso nel modello White, 9 mm negli altri colori) a una batteria da 6.660 mAh, la più capiente mai vista su un pieghevole. Lo abbiamo usato per oltre una settimana in versione Red 16/512 GB per capire se lo Snapdragon 8 Elite Gen 5 tiene testa alla concorrenza anche fuori dai benchmark ufficiali
Redmi Pad 2 9.7: ampio display, economico e peso contenuto, ma qualche limite nelle prestazioni
Redmi Pad 2 9.7: ampio display, economico e peso contenuto, ma qualche limite nelle prestazioni
Redmi Pad 2 9.7 punta su un display ampio e fluido, una batteria capace di accompagnare l'uso quotidiano senza ansie da ricarica e un prezzo accessibile, a partire da 179,90 euro per la versione con 64 GB di storage. Lo Snapdragon 6s 4G Gen 2 e i 4 GB di RAM della configurazione più diffusa frenano però chi cerca reattività e multitasking spinto: ecco il bilancio dopo due settimane di prova diretta
Peugeot Polygon Concept: ecco il futuro delle utilitarie
Peugeot Polygon Concept: ecco il futuro delle utilitarie
Polygon è la concept car di Peugeot che mostra il futuro delle soluzioni del segmento B: tra design compatti e innovativi affiancati da dimensioni compatte uno scherzo dalla manovrabilità incredibile per le manovre a bassa velocità
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 27-10-2009, 16:08   #1
nikel
Senior Member
 
L'Avatar di nikel
 
Iscritto dal: Mar 2006
Città: Milano
Messaggi: 832
[ANSI C] cerco istruzioni!

ciao ragazzi...

sto cercando istruzioni o funzioni che siano l'equivalente di queste istruzioni in pascal:

gotoxy()
textcolor()
backgroundcolor()
a:=readkey;
keypressed

spero mi possiate aiutare ^^

uso dev-cpp e vorrei non dover utilizzare librerie non standard.. grazie
nikel è offline   Rispondi citando il messaggio o parte di esso
Old 27-10-2009, 21:05   #2
fero86
Senior Member
 
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
in ANSI C non ci sono, dovresti appunto usare librerie non standard. l'unica per la quale puoi trovare una cosa analoga é la readkey: non so se la readkey mostri l'echo e attenda Invio, ma in C c'é la getchar (che fa entrambe le cose).
fero86 è offline   Rispondi citando il messaggio o parte di esso
Old 28-10-2009, 14:01   #3
nikel
Senior Member
 
L'Avatar di nikel
 
Iscritto dal: Mar 2006
Città: Milano
Messaggi: 832
quindi in ansi c non potrei nemmeno scrivere al centro dello schermo??

speravo di finire il tetris text based che avevo iniziato in pascal anni fa...
nikel è offline   Rispondi citando il messaggio o parte di esso
Old 28-10-2009, 14:19   #4
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da nikel Guarda i messaggi
speravo di finire il tetris text based che avevo iniziato in pascal anni fa...
Finirlo in Pascal?
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 28-10-2009, 16:22   #5
nikel
Senior Member
 
L'Avatar di nikel
 
Iscritto dal: Mar 2006
Città: Milano
Messaggi: 832
nah ho smesso con certe cose... volevo considerarlo come un esercizio in vista dell'esame di informatica a
nikel è offline   Rispondi citando il messaggio o parte di esso
Old 28-10-2009, 21:25   #6
fero86
Senior Member
 
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
Quote:
Originariamente inviato da nikel Guarda i messaggi
quindi in ansi c non potrei nemmeno scrivere al centro dello schermo??
in ANSI C non esiste il concetto della console, esiste il concetto degli standard streams: lo standard input, lo standard output e lo standard error; parliamo dello standard output. in quanto stream di output l'unica cosa che puoi fare con lo standard output é buttarci dentro tutti i caratteri che ti pare, poi a seconda del mezzo su cui é mappato l'stdout otterrai determinati effetti collaterali: se gli standard streams sono rediretti sulla console vedrai i caratteri stampati in ordine sulla console, se sono rediretti su un file otterrai un file di testo, e cosi via. l'esempio del file di testo dovrebbe farti capire l'errore concettuale nel voler scrivere in posizioni arbitrarie della console e modificare quello che hai scritto in precedenza: come si dovrebbe vedere una partita del tuo tetris se il tuo programma venisse avviato con stdout rediretto su file? il problema é che tu vuoi gestire un cursore sullo schermo, ma non c'é nessun cursore: lo stream é un pozzo senza fondo, ci puoi solo scrivere, non ha cursore.

una cosa che potresti tuttavia fare é quella di assumere che la console sia grande 80x25 caratteri (cioé che abbia 25 linee di testo e che ogni linea possa contenere 80 caratteri) che sono le dimensioni classiche, e stampare molto velocemente intere schermate da 80x25; per evitare il flickering devi lavorare sul buffering dello standard output (prova a consultare la documentazione di setvbuf, non mi ricordo se é quella che possa fare al caso tuo). in tal modo nell'esempio del file di testo la tua partita di tetris verrebbe stampata come una marea di schermate in successione (sarebbe un file enorme ).

tutto sommato a me non sembra schifosissimissimo come approccio, se vuoi assolutamente realizzare un tetris senza GUI e senza grafica accelerata ma solamente in ASCII mi sembra la soluzione migliore; il fatto che possa sembrare schifosa dipende dal fatto che i videogames non si fanno in ANSI C peró resta comunque un ottimo esercizio didattico.
fero86 è offline   Rispondi citando il messaggio o parte di esso
Old 29-10-2009, 16:52   #7
nikel
Senior Member
 
L'Avatar di nikel
 
Iscritto dal: Mar 2006
Città: Milano
Messaggi: 832
Quote:
Originariamente inviato da fero86 Guarda i messaggi
in ANSI C non esiste il concetto della console, esiste il concetto degli standard streams: lo standard input, lo standard output e lo standard error; parliamo dello standard output. in quanto stream di output l'unica cosa che puoi fare con lo standard output é buttarci dentro tutti i caratteri che ti pare, poi a seconda del mezzo su cui é mappato l'stdout otterrai determinati effetti collaterali: se gli standard streams sono rediretti sulla console vedrai i caratteri stampati in ordine sulla console, se sono rediretti su un file otterrai un file di testo, e cosi via. l'esempio del file di testo dovrebbe farti capire l'errore concettuale nel voler scrivere in posizioni arbitrarie della console e modificare quello che hai scritto in precedenza: come si dovrebbe vedere una partita del tuo tetris se il tuo programma venisse avviato con stdout rediretto su file? il problema é che tu vuoi gestire un cursore sullo schermo, ma non c'é nessun cursore: lo stream é un pozzo senza fondo, ci puoi solo scrivere, non ha cursore.

una cosa che potresti tuttavia fare é quella di assumere che la console sia grande 80x25 caratteri (cioé che abbia 25 linee di testo e che ogni linea possa contenere 80 caratteri) che sono le dimensioni classiche, e stampare molto velocemente intere schermate da 80x25; per evitare il flickering devi lavorare sul buffering dello standard output (prova a consultare la documentazione di setvbuf, non mi ricordo se é quella che possa fare al caso tuo). in tal modo nell'esempio del file di testo la tua partita di tetris verrebbe stampata come una marea di schermate in successione (sarebbe un file enorme ).

tutto sommato a me non sembra schifosissimissimo come approccio, se vuoi assolutamente realizzare un tetris senza GUI e senza grafica accelerata ma solamente in ASCII mi sembra la soluzione migliore; il fatto che possa sembrare schifosa dipende dal fatto che i videogames non si fanno in ANSI C peró resta comunque un ottimo esercizio didattico.
estremamente interessate! grazie ^.^

per quello che ho capito (sono abbastanza ignorante in materia) quello che potrei fare è riempire prima un buffer di 80x25 e poi stamparlo tutto insieme sullo schermo giusto??
nikel è offline   Rispondi citando il messaggio o parte di esso
Old 31-10-2009, 12:42   #8
fero86
Senior Member
 
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
Quote:
Originariamente inviato da nikel Guarda i messaggi
estremamente interessate! grazie ^.^

per quello che ho capito (sono abbastanza ignorante in materia) quello che potrei fare è riempire prima un buffer di 80x25 e poi stamparlo tutto insieme sullo schermo giusto??
si, esattamente.

peró prima di iniziare a stampare le schermate ti conviene impostare adeguatamente il buffering: devi fare in modo che stdout bufferizzi 80*25 bytes prima di fare il flush, cosi quando avviene il flush viene inviata un'intera schermata alla console.

per stampare una schermata stampa con printf una stringa di 80*25 caratteri; se la tua schermata contiene spazi vuoti non commettere l'errore di stampare linee con meno di 80 caratteri concludendole con un newline: cosi non riempiresti tutto il buffer e sfaseresti i flush automatici, quindi usa gli spazi per riempire le celle vuote della schermata. i newline non stamparli proprio: se assumi che la console sia grossa esattamente 80x25 le linee vanno a capo da sole.

ho ricontrollato il reference della funzione setvbuf, mi pare proprio quella che fa al caso tuo. la dovresti chiamare cosi:
Codice:
setvbuf(stdout, NULL, _IOFBF, 80 * 25);
fflush(stdout);
fflush serve a svuotare il buffer prima di stampare la prima schermata. queste due istruzioni vanno eseguite immediatamente prima di stampare la prima schermata di gioco ma non prima, altrimenti cominceresti ad usare le modalitá di buffering di gioco per stampare altre cose (menu?) e il risultato sarebbe che non vedresti nulla finché non stampi 80*25 caratteri, newline inclusi.

maggiori dettagli sulla setvbuf: http://www.linuxmanpages.com/man3/setvbuf.3.php
le altre funzioni che vedi descritte sono implementate al di sopra della setvbuf, che é quella principale; non usare le altre perché tra quelle che ti sono utili la setvbuf é l'unica conformante allo standard ANSI C.
fero86 è offline   Rispondi citando il messaggio o parte di esso
Old 31-10-2009, 12:55   #9
fero86
Senior Member
 
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
altra cosa: evita di stampare caratteri ASCII del set esteso, quindi stampa solo caratteri con codice compreso tra 0 e 127 inclusi. il motivo é che la console di Windows non é propriamente ASCII ma ANSI, che significa che i codici ASCII del set esteso sono mappati su caratteri diversi a seconda della codepage impostata.

altra cosa ancora
non stampare cosi:
Codice:
printf("... schermata ...");
stampa cosi:
Codice:
printf("%s", "... schermata ...");
giusto per evitare che la printf becchi qualche falso format code se per qualche motivo durante lo sviluppo ti capita di stampare dei % nelle schermate
fero86 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione HONOR Magic V6: spessore record e super batteria. È lui il fold da battere? Recensione HONOR Magic V6: spessore record e sup...
Redmi Pad 2 9.7: ampio display, economico e peso contenuto, ma qualche limite nelle prestazioni Redmi Pad 2 9.7: ampio display, economico e peso...
Peugeot Polygon Concept: ecco il futuro delle utilitarie Peugeot Polygon Concept: ecco il futuro delle ut...
Reno16 Pro: il compatto di OPPO punta su fotocamera da 200MP e il nuovo Bubble! La recensione Reno16 Pro: il compatto di OPPO punta su fotocam...
 Hisense 55U7SE: tuttofare e accessibile, il MiniLED per film, sport e gioco Hisense 55U7SE: tuttofare e accessibile, il Min...
I musulmani non dovrebbero usare le crip...
AMD Radeon 9000 pronte a sorpassare le N...
Soulframe, il nuovo gameplay chiarisce m...
La Commissione UE presenterà una ...
Niente più eliche: con due ali, i...
Waze si aggiorna con nuove funzioni IA: ...
Oltre 200 economisti ed esperti di IA la...
I migliori produttori del 2026? Facci sa...
Claude Code consuma fino a 33 mila token...
Si chiama Starfire il chip con cui Intel...
Chrome espone l'OS reale dietro ogni ric...
Intel investe altri 5 miliardi di euro p...
OPPO sceglie Clara per il debutto della ...
Migliori offerte sui robot aspirapolvere...
Nuove funzionalità per Network Se...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 16:19.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v