Anonymní profil Lukáš Vašek – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil Lukáš Vašek – Programujte.comAnonymní profil Lukáš Vašek – Programujte.com

 

Příspěvky odeslané z IP adresy 85.71.99.–

Lukáš Vašek
C / C++ › SDL vykreslení backgroundu
1. 6. 2012   #158678

Vyřešeno

Lukáš Vašek
C / C++ › SDL vykreslení backgroundu
1. 6. 2012   #158677

VYŘEŠENÍ

Lukáš Vašek
C / C++ › SDL vykreslení backgroundu
1. 6. 2012   #158675

Dobrý den, mám problém, podle návody jsem si udělal pohyblivý obrázek ale chtěl sem pod něj background aby obrázek nedělal čmouhy. Plocha se ale vykresluje jen při pohybu doleva a nahoru viz. screen.

Kod main 

#include <iostream>
#include "SDL.h"
#include "hlavicka.h"



int main(int argc, char *argv[])
{
	
	if( SDL_Init(SDL_INIT_VIDEO) < 0 ){
  printf("Inicializace SDL se nezdařila: %s\n", SDL_GetError());
  exit(1);
}
		atexit(SDL_Quit);
		
screen = SDL_SetVideoMode(800, 600, 32, SDL_HWSURFACE|SDL_DOUBLEBUF);

SDL_SWSURFACE;

if ( screen == NULL ){
  printf("Vytvoření okna se nezdařilo: %s\n", SDL_GetError());
  exit(1);
}

LoadImage();
DrawIMG(background, 0, 0);


bool done=false;
while (done == false)
		
{ 
  SDL_Event event;
  
  while( SDL_PollEvent(&event) )
  {
    if( event.type == SDL_QUIT ) done=true;
	if(event.type == SDL_KEYUP){
		if(event.key.keysym.sym == SDLK_ESCAPE) done = true;
								}
  }

  keys = SDL_GetKeyState(NULL);
  
if(keys[SDLK_RIGHT]) image_x += 1;
if(keys[SDLK_LEFT]) image_x -= 1;
if(keys[SDLK_DOWN]) image_y += 1;
if(keys[SDLK_UP]) image_y -= 1;

DrawScene2(screen);
 };

return 0;
}

kod hlavicka.h 

#ifndef _HLAVICKA_H
#define _HLAVICKA_H

SDL_Surface *screen;
SDL_Surface *image;
SDL_Surface *background;

Uint8* keys;

int image_x,image_y;

void LoadImage()
{
	image = SDL_LoadBMP("image.bmp");
	background = SDL_LoadBMP("bg.bmp");
}


void DrawIMG(SDL_Surface *img, int x, int y){
  SDL_Rect rect;
  rect.x = x;
  rect.y = y;
  SDL_BlitSurface(img, NULL, screen, &rect);
}


void DrawIMG_2(SDL_Surface *img, int x, int y, int w, int h,int x2, int y2){
  SDL_Rect rect;
  rect.x = x;
  rect.y = y;
  SDL_Rect rect2;
  rect2.x = x2;
  rect2.y = y2;
  rect2.w = w;
  rect2.h = h;
  SDL_BlitSurface(img, &rect2, screen, &rect);
}

void DrawScene2(SDL_Surface *screen){
 
	DrawIMG(image, image_x, image_y);
	DrawIMG_2(background, image_x-1, image_y-1, 152, 152,image_x-1, image_y-1);
	SDL_Flip(screen);
}


#endif 

Předem děkuji za odpověď



Lukáš Vašek
C / C++ › Proč to padá ?
31. 5. 2012   #158621

#6 Lukáš Vašek
a nyní mi po zelený šipce nejde ani getchat, ihned se zavře i kdybych tam měl tisíce get charů

Lukáš Vašek
C / C++ › Proč to padá ?
31. 5. 2012   #158620

#5 liborb
je to pravda, přes zelený tlačítko se to rozjelo, ale spouštím to přes debugg and play .. a vše dřív mi jelo, nevim proč najednou to takhle vyskočí a musim kliknout na zelenou šipičku

Lukáš Vašek
C / C++ › Proč to padá ?
31. 5. 2012   #158615

#3 Lukáš Vašek
takto, okno v pozadí běží ale nic nedělá

Lukáš Vašek
C / C++ › Proč to padá ?
31. 5. 2012   #158614

#2 liborb

Lukáš Vašek
C / C++ › Proč to padá ?
31. 5. 2012   #158610

proč mi tohle po spuštení ihned spadne ? děkuji

#include <stdio.h>
#include <iostream>
#include <cstdlib>

using namespace std;
enum kod_chyby {uspech,chyba};

kod_chyby faktor (int,int&,int&);

int main()
{   
    int cislo,cislo2,cislo3;
     kod_chyby vysledek;
  
     cout<<"Zadej cislo od 1 do 20:";
    cin>>cislo;

    vysledek=faktor(cislo,cislo2,cislo3);
    
    if (vysledek==uspech)
    {
        cout<<"\nCislo:"<<cislo;
        cout<<"\nnadruhou:"<<cislo;
        cout<<"\nnatreti:"<<cislo;
    } else
        cout<<"Spatne zadane cislo";
    
   return 0;
}

kod_chyby faktor(int c,int &odCislo2,int &odCislo3)
{
    if ((c < 21) && (c > 0))
    {
        odCislo2=c*c;
        odCislo3=c*c*c;
        return uspech;   
    } 
    else 
        return chyba;
}

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032022 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý