Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Samsung Micro RGB R95H, il primo LCD a LED rossi, verdi e blu di Samsung alla prova del banco di misura
Samsung Micro RGB R95H, il primo LCD a LED rossi, verdi e blu di Samsung alla prova del banco di misura
Il primo Micro RGB di Samsung per il salotto è il 65 pollici da 2.749 euro. Sul banco di misura abbiamo rilevato 2.000 nit di picco, nero assoluto con il local dimming e il 91,4% del BT.2020, il colore più ampio che abbiamo misurato su un LCD
iPhone 18 Pro: la recensione del miglior iPhone compatto di sempre
iPhone 18 Pro: la recensione del miglior iPhone compatto di sempre
Apple ha rinnovato iPhone 18 Pro soprattutto dentro: chip A20 Pro a 2 nm con memoria affiancata al SoC, camera di vapore tre volte più ampia, Dynamic Island più piccola del 25% grazie a Face ID sotto il display e fotocamera principale con diaframma variabile da f/1.48 a f/4. Lo abbiamo misurato al colorimetro e nei benchmark, usato con iOS 27 e messo alla prova in fotografia tra laghi, borghi e interni poco illuminati
Panasonic, 30 anni di Toughbook: la "Bibbia" di mille regole dietro i nuovi G3 e 34
Panasonic, 30 anni di Toughbook: la "Bibbia" di mille regole dietro i nuovi G3 e 34
A Londra, per il trentennale dei Toughbook, Panasonic ha presentato il tablet G3 e il 2-in-1 34. Con Jon Tucker, a capo dell'ingegneria europea, abbiamo parlato di ciò che non si vede: batterie, antenne, porte seriali e accorgimenti nati sul campo
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


Samsung Micro RGB R95H, il primo LCD a LED rossi, verdi e blu di Samsung alla prova del banco di misura Samsung Micro RGB R95H, il primo LCD a LED rossi...
iPhone 18 Pro: la recensione del miglior iPhone compatto di sempre iPhone 18 Pro: la recensione del miglior iPhone ...
Panasonic, 30 anni di Toughbook: la "Bibbia" di mille regole dietro i nuovi G3 e 34 Panasonic, 30 anni di Toughbook: la "Bibbia...
realme C100x, lo smartphone economico con la batteria da 7500 mAh. La recensione realme C100x, lo smartphone economico con la bat...
Star Wars Zero Company è l'erede di XCOM 2 Star Wars Zero Company è l'erede di XCOM ...
Android Auto, il nuovo lettore porta in ...
I nuovi MacBook con display OLED potrebb...
Windows 11: l'aggiornamento KB5124010 fa...
iPhone Duo, la pellicola protettiva del ...
Memorie più costose, NVIDIA aumen...
TSMC potrebbe affiancare Intel nel proge...
Windows 11, un solo simbolo può risparmi...
Niente cloud, niente abbonamenti, niente...
Prime o meno, Amazon è piena di o...
Kindle in offerta: e-reader base a 89€ e...
Hackerato l'account ufficiale Microsoft ...
Tutti i dispositivi Ring: videocamere 2K...
Memorie HBM, la domanda si concentra su ...
Dash cam 70mai 4K da 74,99€: A800 Nano, ...
Nuovi rincari da Fastweb: l'operatore ha...
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: 03:45.


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