n° 219
Novembre 2017
Dicembre 14, 2017, 07:08:34 *
Benvenuto! Accedi o registrati.
Hai dimenticato l'e-mail di attivazione?

Accesso con nome utente, password e durata della sessione
Notizia:
 
   Indice   Linux Windows Techassistance Gameassistance videogame hardware Aiuto Ricerca Agenda Downloads Accedi Registrati  


* Messaggi recenti
Messaggi recenti
Pagine: [1]   Vai giù
  Stampa  
Autore Discussione: Come posso accellerare la velocita della racchetta ?  (Letto 1129 volte)
0 utenti e 1 Utente non registrato stanno visualizzando questa discussione.
beppo63
Jr. Member
**

Karma: +0/-102
Scollegato Scollegato

Messaggi: 97


Mostra profilo
« inserita:: Agosto 14, 2017, 12:32:58 »

Salve mi piacerebbe costruire un gioco tipo archanoid , però la velocita della racchetta lascia a desiderare .
Si accettano suggerimenti .
La racchetta si sposta con i tasti s d .
Codice:
#include <iostream>
#include <conio.h>
#include<stdio.h>
#include<stdlib.h>
#include<windows.h>

using namespace std;
int j;
int z=0;
void stamp(int z);
void gotoxy(int x, int y);

int main() {
   int MOV = 0, r ,c;
   char tasto;




gotoxy(0,23);
cout<<"|_|";;
while(MOV != 1) {
switch(tasto = _getch()) {
                 case 'd':
     if(tasto == 'd' && z>=0 && z<=77){
                             system("CLS");
                             gotoxy(z++,23);
                             cout<<"|_|";


                             }
                             break;
                case 's':
                if (z<=0)z=2;
                if(tasto == 's' && z>=0){
                             system("CLS");
                             gotoxy(z--,23);
                             cout<<"|_|";
                             }
                             break;
              }
              }
system("pause");
}


void gotoxy(int x, int y)
{
     HANDLE HConsole;
     CONSOLE_SCREEN_BUFFER_INFO ConsoleInfo;
     HConsole = GetStdHandle(STD_OUTPUT_HANDLE);
     ConsoleInfo.dwCursorPosition.X = x;
     ConsoleInfo.dwCursorPosition.Y = y;
     SetConsoleCursorPosition(HConsole,ConsoleInfo.dwCursorPosition);
     /*
HANDLE HConsole; HANDLE è simile ad un puntatore ma è piu’ complesso.

CONSOLE_SCREEN_BUFFER_INFO ConsoleInfo; Dichiariamo ConsoleInfo come struttura CONSOLE_SCREEN_BUFFER_INFO . La struttura contiene informazioni sulla console come la posizione del cursore, il colore del testo e dello sfondo ecc.

HConsole = GetStdHandle(STD_OUTPUT_HANDLE); Otteniamo l’Handle della console

ConsoleInfo.dwCursorPosition.X = x; ConsoleInfo.dwCursorPosition.Y = y; Inseriamo le nuove coordinate

SetConsoleCursorPosition(HConsole,ConsoleInfo.dwCursorPosition);
SetConsoleCursorPosition setta la posizione del cursore. Come parametri passiamo l’handle della console e la nuova posizione.
     */
}
 
Registrato
oregon
Jr. Member
**

Karma: +22/-6
Scollegato Scollegato

Messaggi: 239


Mostra profilo
« Risposta #1 inserita:: Agosto 14, 2017, 02:36:02 »

accelerare con una sola l

Non devi usare il CLS ma visualizza tre spazi nella vecchia posizione della racchetta prima di visualizzarla nella prossima posizione.

Arkanoid ...
Registrato
oregon
Jr. Member
**

Karma: +22/-6
Scollegato Scollegato

Messaggi: 239


Mostra profilo
« Risposta #2 inserita:: Agosto 14, 2017, 08:37:12 »

Magari non usare lo stream del c++ ... è meglio qualche puts

Codice:
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>

void gotoxy(int x, int y);

int main()
{
int MOV = 0;
int z = 40;
char tasto;

gotoxy(z, 23);
puts("|_|");

while (MOV != 1) {
switch (tasto = _getch()) {
case 'd':
if (tasto == 'd' && z < 80) {
gotoxy(z++, 23);
puts(" |_|  ");
}
break;
case 's':
if (tasto == 's' && z > 0) {
gotoxy(z--, 23);
puts("\b|_|  ");
}
break;
}
}
system("pause");
}
Registrato
beppo63
Jr. Member
**

Karma: +0/-102
Scollegato Scollegato

Messaggi: 97


Mostra profilo
« Risposta #3 inserita:: Agosto 21, 2017, 04:31:16 »

La procedura che mi suggerisci è la cosa più logica da fare , però la velocita della racchetta lascia sempre a desiderare .
Registrato
oregon
Jr. Member
**

Karma: +22/-6
Scollegato Scollegato

Messaggi: 239


Mostra profilo
« Risposta #4 inserita:: Agosto 21, 2017, 07:23:26 »

La velocità dipende dal ritardo di ripetizione della tastiera. Modificalo oppure usi un altro device di input come un joystick.
Registrato
Pagine: [1]   Vai su
  Stampa  
 
Vai a:  

Copyright © 2017 Edizioni Master SpA. p.iva : 02105820787

Tutti i diritti di proprietà letteraria e artistica riservati. - Privacy



powered by Simple Machines