Jump to content
Sign in to follow this  
seuqram

leitura/escrita

Recommended Posts

seuqram

pessoal tou a fazer um jogo...

"batalha naval"

e faltame umas coisitas no menu(opçoes)

queria criar um ficheiro assim:

volume: 1000

balanço: 100

ritmo: 1000

modo de jogo: 2

...

eu sei fazer isso mas o que eu n sei é ler inteiros em linhas que eu quizer exemplo:

dizia ao programa para ler a linha 3, um inteiro e guardasse para a variavel a.

a variavel a valia 1000.

dizia ao pograma para ler a linha 4 do ficheiro... ele lia 2...

ja tentei tudo ate meter /n no fscanf para ler outra linha ;) mas so que n percebo... pode ser que saibam alguma funçao para o que eu quero...

Share this post


Link to post
Share on other sites
pikax

http://www.cplusplus.com/reference/iostream/istream/getline/

tambem tens uma funcao getline para tratamento de ficheiros em C


Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Share this post


Link to post
Share on other sites
seuqram

nao ha nenhuma funçao stdio.h que fassa o que eu quero?(dizer ao programa em que linha de um ficheiro quero que leia)!

Share this post


Link to post
Share on other sites
pmg

nao ha nenhuma funçao stdio.h que fassa o que eu quero?(dizer ao programa em que linha de um ficheiro quero que leia)!

Nota que <stdio.h> é um header de C (e de C++ só por compatibilidade com C). Em C++ seria talvez melhor usar o cabeçalho <iostream>.

Não há nenhuma função (em C Standard) com protótipo no <stdio.h> que faça o que tu queres. Precisas de construir uma versão personalizada ... o que não é nada difícil.

Perguntas (válidas tanto para C como para C++):

se pedires a linha 6 dum ficheiro com 3 linhas, qual queres que seja o resultado?

se pedires a linha 4903 dum ficheiro e logo a seguir a linha 4902, da segunda vez queres ler o ficheiro novamente desde o início (ou o conteúdo do ficheiro fica guardado "dentro" da função)?

se pedires uma linha do ficheiro, mas essa linha não tiver um número (linha em branco, por exemplo; ou um comentário ...) qual queres que seja o resultado?


What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Share this post


Link to post
Share on other sites
seuqram

Nota que <stdio.h> é um header de C (e de C++ só por compatibilidade com C). Em C++ seria talvez melhor usar o cabeçalho <iostream>.

Não há nenhuma função (em C Standard) com protótipo no <stdio.h> que faça o que tu queres. Precisas de construir uma versão personalizada ... o que não é nada difícil.

Perguntas (válidas tanto para C como para C++):

se pedires a linha 6 dum ficheiro com 3 linhas, qual queres que seja o resultado?

se pedires a linha 4903 dum ficheiro e logo a seguir a linha 4902, da segunda vez queres ler o ficheiro novamente desde o início (ou o conteúdo do ficheiro fica guardado "dentro" da função)?

se pedires uma linha do ficheiro, mas essa linha não tiver um número (linha em branco, por exemplo; ou um comentário ...) qual queres que seja o resultado?

1-vai aparecer em branco!(se nao ouver nada la escrito,sim!)

2-quero que leia o conteudo do ficheiro fica guardado "dentro" da função

3-NULL

eu ja mexi com o fopen,fscanf,fpritf... e por isso que queria uma funçao da biblioteca stdio!

Share this post


Link to post
Share on other sites
seuqram

so que ainda n percebi essa funçao "pikax" ela le mesmo um ficheiro.txt?

Share this post


Link to post
Share on other sites
pikax

so que ainda n percebi essa funçao "pikax" ela cria mesmo um ficheiro.txt?

a funcao getline() e' para teres uma linha no ficheiro


Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Share this post


Link to post
Share on other sites
seuqram

a funcao getline() e' para teres uma linha no ficheiro

-.-

eu n quero "ter"(criar), eu quero ler uma linha que eu quizer no ficheiro...

Share this post


Link to post
Share on other sites
HappyHippyHippo

tens mesmo que criar uma função que te le a linha que pretendes.

tens que ver que o conteudo de um ficheiro é uma sucessão de bytes. apesar de veres por linhas os ficheiros de texto, isso em termos informáticos não é bem assim porque cada SO tem maneiras diferentes de interpretar uma mudança de linha.

uma solução seria assim (visto que o teu ficheiro é bem formatado):

void getLine(std::istream * file, std::string * string) {
  char buffer[256];
  file->getline(buffer, 256);
  string = buffer;
}

void getLineN(std::istream * file, std::string * string, int n) {
  file->seekg(0, ios_base::beg);

  int i = 0;
  while (i != n) {
    getLine(file, string);
    i++;
  }
}

void getLineValue(std::istream * file, int * value, int n) {
  std::string s;
  getLineN(file, &string, n);
  sscanf(string.c_str(), "%s:%d", value);
}

PS : não testado ... fica a ideia (uma pequena alteração ...)


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
seuqram

-.-

1-eu nem conheco bem a biblioteca iostream...

2-sscanf? ou fscanf?

3-void getLineN(std::istream * file, std::string * string, int n) eu nem sei o que sao parametros!

4-nao percebo "->" so sei que pode acessar a algum membro de qual quer coisa mas n percebo...

5-nem percebi a logica :nono1: (com estas duvidas todas)!

pode ser que arranje outra sulucao eu proprio para o que eu quero...

ate posso criar um ficheiro.txt para cada inteiro que quero!

6-ainda n reparaste que sou um iniciante?! nem sei o que fazem alguns sinas em c/c++!

Share this post


Link to post
Share on other sites
pikax

-.-

1-eu nem conheco bem a biblioteca iostream...

2-sscanf? ou fscanf?

3-void getLineN(std::istream * file, std::string * string, int n) eu nem sei o que sao parametros!

4-nao percebo "->" so sei que pode acessar a algum membro de qual quer coisa mas n percebo...

5-nem percebi a logica :nono1: (com estas duvidas todas)!

pode ser que arranje outra sulucao eu proprio para o que eu quero...

ate posso criar um ficheiro.txt para cada inteiro que quero!

6-ainda n reparaste que sou um iniciante?! nem sei o que fazem alguns sinas em c/c++!

1 - a biblioteca iostream e para fazer inputs e outputs em C++

2- fscanf e para ficheiros, sscanf e para mandar informacao para um buffer.

3- o primeiro parametro e' um apontador para um ficheiro, o segundo para uma string, o terceiro e o numero da linha que queres.

4- o operador '->' e para aceder a um membro de um apontador.

6- Podes ser iniciante, mas se as tuas questões requerem um grau de dificuldade que nao  suportas, entao nao achas que devias de ganhar pratica a fazer exemplos menos "complexos" e indo subindo de dificuldade.

6 2a parte- os sinais procuras na net sobre operadores.

Eu de vez em quando meto-me a fazer "projectos" que requeiram conhecimentos que eu nao tenho.


Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Share this post


Link to post
Share on other sites
seuqram

voces disseram que a biblioteca studio nao era bom para eu usar neste problema?

ja resolvi meus problemas com a biblioteca stdio!...  :D

mas obrigado a todos por a cooperação...

quando meu jogo estiver pronto mando-o a cada um no forum :P

Share this post


Link to post
Share on other sites
pmg

voces disseram que a biblioteca studio nao era bom para eu usar neste problema?

ja resolvi meus problemas com a biblioteca stdio!...  :P

LOL @ biblioteca studio ...

O que se passa é que o header <stdio.h> é um header de C (e nao de C++), que, quando usado em C++ nao usa algumas das "novidades" existentes em C++, tornando-se por isso mesmo, pouco recomendavel.

Assim mais ou menos, é como ter um Ferrari e um tractor e querer que o tractor funcione com gasolina de aviao ... ou que o Ferrari funcione com gasoleo agricola. Funcionar, funciona.


What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Share this post


Link to post
Share on other sites
pikax

voces disseram que a biblioteca studio nao era bom para eu usar neste problema?

ja resolvi meus problemas com a biblioteca stdio!...  :P

mas obrigado a todos por a cooperação...

quando meu jogo estiver pronto mando-o a cada um no forum :P

LOL... a biblioteca "stdio.h" e' C, em C++ e' recomendado usar "cstdio".

É algo parecido a utilizar "gets" funciona bem, mas podes correr o risco de overflow no buffer.

Quando tiveres o jogo terminado, manda para o pessoal ver ;)


Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Share this post


Link to post
Share on other sites
seuqram

ya eu mostrovos... :D

se quizerem ver meu 1º jogo feito em allegro vejam este video:

http://www.youtube.com/watch?v=gQVPXr1eFGM&feature=plcp&context=C4c12cc9VDvjVQa1PpcFM6_LL7rsPZ_GDinQTE8Q5Md7BbuvCofks%3D

e depois la encontrarao o site para voces fazerem o download do jogo...

o video n ficou la grande coisa :bored: o programa gravou o som boe alto e ficou horrivel e o progrema tambem nao gravou fullscreen ficou um bocado entranho...

mas vejam o video e descarreguem meu 1º jogo :P

quando meu segundo jogo estiver pronto meteo aqui no forum!"batalha naval"

Share this post


Link to post
Share on other sites
pikax

parabéns, esta engraçado, mas podias melhorar um pouco.

Devias deixar o user escolher entre full-screen ou windows mode.


Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Share this post


Link to post
Share on other sites
HappyHippyHippo

epa .. estava de auscutadores ... fiquei surdo durante 10 minutos ....

para primeiro joguinho até está bem

1 conselho ... a tua identação leva um 2 de 1 a 5 ....


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
seuqram

pessoal podem-me dizer mais uma coisa?

o volume do play sample vai de  0 a 255, mas da para dublicar o som ou seja meter 500?

🤔

Share this post


Link to post
Share on other sites
seuqram

parabéns, esta engraçado, mas podias melhorar um pouco.

Devias deixar o user escolher entre full-screen ou windows mode.

ya, mas isso e só se eu consseguisse fazer um janelinha pequena(daquelas quando aparece: voce que sair, sim ou nao) mas aparecia uma janelinha a dizer window mod/fullscreen

conessegues fazer isso?

Share this post


Link to post
Share on other sites
pikax

Trabalhei com o allegro pouco tempo e nao fiz quase nada, mas sei que da para mudar a resolucao, sem ter qe criar uma janela

tens aqui - procura por: set_gfx_mode


Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Share this post


Link to post
Share on other sites
seuqram

Trabalhei com o allegro pouco tempo e nao fiz quase nada, mas sei que da para mudar a resolucao, sem ter qe criar uma janela

tens aqui - procura por: set_gfx_mode

ai nao encontrei nada! mas preciso arranjar uma funçao que feche a janela depois eu abro outra janela com fullscreen ou windowed...(troco)

(arranjer uma funçao que feche a janela 🤔

ou alguma funçao que automaticamente mude!

Share this post


Link to post
Share on other sites
HappyHippyHippo

ja experimentaste :

get_desktop_resolution(&deskW, &deskH);
set_gfx_mode(GFX_AUTODETECT, deskW, deskH, 0, 0);


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.