Форум С++

 

Ответить на сообщение

Вернуться к теме

Вы отвечаете на сообщение:

Автор: tolyadzyuba   (22.11.2008 в 14:41)
Посмотрите ктонибудь, где ошибка! Пишет: Инструкция по адресу "0х668d2b25" обратилась к памяти по адресу "0x0000000c". Памятьне может быть "read"


#include <stdio.h>
#include "allegro.h"
#include <time.h>
#define NUM_STEPS    100
#define BUFFER_SIZE  1024

class Pole
{
public:
int game_pole[9][9],a,b,i,k,fl[9][9];    
    int l;   
Pole()
{
    a=0;b=0;i=0;k=0;
        for (i=0;i<9;i++)
        {
            for (k=0;k<9;k++)
            {
                game_pole[i][k]=0;
                fl[i][k]=0;
            }
        }
        setBomb(); 
}

void setBomb()
      {
          //случайно выдает бомбы
          for (i=0;i<10;i++)
          {
              a=(rand()%9);
              b=(rand()%9);
              if (game_pole[a][b]== 10)i=i-1;
              game_pole[a][b]=10;
          }
          //анализ бомб
          for (i=0;i<9;i++)
          {
              for (k=0;k<9;k++)
              {
                  a=0;
                  if (game_pole[i+1][k] == 10 && i+1 != 9 ) a=a+1;
                  if (game_pole[i-1][k] == 10 && i-1 != -1) a=a+1;
                  if (game_pole[i+1][k+1] == 10 && i+1 != 9 && k+1 != 9 ) a=a+1;
                  if (game_pole[i-1][k+1] == 10 && i-1 != -1 && k+1 != 9) a=a+1;
                  if (game_pole[i+1][k-1] == 10 && i+1 != 9 && k-1 != -1) a=a+1;
                  if (game_pole[i-1][k-1] == 10 && i-1 != -1 && k-1 != -1) a=a+1;
                  if (game_pole[i][k+1] == 10 && k+1 != 9 ) a=a+1;
                  if (game_pole[i][k-1] == 10 && k-1 != -1) a=a+1;
                  if (game_pole[i][k] == 10) a=10;
                  game_pole[i][k]=a;
              }    
          }    
      }

// No description
int click(int b)
{
    if (b == 1)
          for (i=0; i<9; i++) 
              for (k=0; k<9; k++) 
                  if (mouse_x > 10+20*i && mouse_x < 10+20*(i+1) && mouse_y > 11+20*k && mouse_y < 11+20*(k+1))
                  {
                      if (fl[i][k]!=7) a=game_pole[i][k];
                      fl[i][k]=8;
                  }   
         

    
    if (b == 2)
          for (i=0; i<9; i++) 
              for (k=0; k<9; k++) 
                  if (mouse_x > 10+20*i && mouse_x < 10+20*(i+1) && mouse_y > 11+20*k && mouse_y < 11+20*(k+1))
                       if (fl[i][k]!=8)
                            if (fl[i][k]!=7)
                            {
                                fl[i][k]=7;
                                a=7;
                            }     
                            else {fl[i][k]=0;a=13;}
l=0;
//проверка условия выигрыша
   for (i=0;i<9;i++)
       for (k=0;k<9;k++)
       {
              if (fl[i][k]!=8) l=l+1;
              if (l==71) a=11;
       }   
   return a;     

}
};


int main(int argc, char *argv[])
{
  Pole Mini;
  
  SAMPLE *amatory;
  SAMPLE *amatory1;
 
   BITMAP *fon;
   BITMAP *c[13];
   BITMAP *winer;
   BITMAP *looser;
   PALETTE the_palette;
   BITMAP *ZAST3;
   BITMAP *ZAST4; 
   
   char bmp_name[256];
   char pcx_name[256];
   
   int bomb[10][2];
   int game_pole[9][9];
   int your_pole[9][9];
   int a=0,b=0,m=0,n=0;
   int i,k,l,r=0;   
     
  if (allegro_init() != 0)
  return 1;
   install_keyboard();
   install_mouse();
   install_timer();
   srand(time(NULL));
   
    if (set_gfx_mode(GFX_DIRECTX_WIN, 400, 199, 0, 0) != 0) {
      if (set_gfx_mode(GFX_SAFE, 400, 199, 0, 0) != 0) {
 set_gfx_mode(GFX_TEXT, 0, 0, 0, 0);
 allegro_message("Unable to set any graphic mode\n%s\n", allegro_error);
 return 1;
      }
   }
      if (install_sound(DIGI_AUTODETECT, MIDI_AUTODETECT, argv[0]) != 0) {
      allegro_message("Error initialising sound system\n%s\n", allegro_error);
      return 1;
   }
   //музыка
      amatory = load_wav("1.wav");
    play_sample(amatory, 128, 128, 0, TRUE);
  

   //picture Ivanov games 


   ZAST3 = load_bmp("zast3.bmp", desktop_palette);
   blit(ZAST3, screen, 0, 0, 0, 0, ZAST3->w, ZAST3->h);
   set_palette(desktop_palette);

   _sleep (3000);

   
   //picture presents
   ZAST4 = load_bmp("ZAST4.bmp", desktop_palette);
   blit(ZAST4, screen, 0, 0, 0, 0, ZAST4->w, ZAST4->h);
   set_palette(desktop_palette);
   
   _sleep (3000);
   
   set_gfx_mode(GFX_DIRECTX_WIN, 400, 199, 0, 0);
   
   fon = load_bmp("fon4.bmp", the_palette);
   winer = load_bmp("winer.bmp", desktop_palette);   
   looser = load_bmp("looser.bmp", desktop_palette);
   set_palette(the_palette);
   blit(fon, screen, 0, 0, 0, 0, fon->w, fon->h);
   c[0] = load_bmp("0.bmp", the_palette);
   c[1] = load_bmp("1.bmp", the_palette);
   c[2] = load_bmp("2.bmp", the_palette);
   c[3] = load_bmp("3.bmp", the_palette);
   c[4] = load_bmp("4.bmp", the_palette);
   c[5] = load_bmp("5.bmp", the_palette);
   c[6] = load_bmp("6.bmp", the_palette);
   c[7] = load_bmp("bomba1.bmp", the_palette);
   c[8] = load_bmp("pusto.bmp", the_palette);
   c[9] = load_bmp("vopros.bmp", the_palette);
   c[10] = load_bmp("bomba.bmp", the_palette);
   c[13] = load_bmp("kletka.bmp", the_palette);
   
   
      show_mouse(screen);           
   
   do {
    
      if (mouse_b == 1) 
      {
          scare_mouse(); //скрыть мышь чтобы небыло косяков
          
          r=Mini.click(mouse_b);
          if (r=10)
          {
              _sleep(2000);
              set_palette(desktop_palette);
              clear_to_color(screen, makecol(255, 255, 255));
              blit(looser, screen, 0, 0, 0, 0, 400, 199);
              _sleep(3000);return 0;
          }    
          else if (r=11) 
          {
              set_palette(desktop_palette);
              clear_to_color(screen, makecol(255, 255, 255));
              blit(winer, screen, 0, 0, 0, 0, 400, 199);
              _sleep(5000);return 0;
          }    
          blit(c[r], screen, 0, 0, 10+20*i, 11+20*k, c[0]->w, c[0]->h);
      }    
      if (mouse_b == 2) 
      {
          scare_mouse();
          r=Mini.click(mouse_b);
          blit(c[r], screen, 0, 0, 10+20*i, 11+20*k, c[0]->w, c[0]->h);
      }

      show_mouse(screen);
        
      vsync();              
    } while (!key[KEY_ESC]);
   
  system("PAUSE");
  return 0;
}

END_OF_MAIN();


Ваше имя:

Пароль:

Цитировать

Используйте тэги для выделения текста:
Код: [code][/code]
Жирный: [b][/b]
Наклонный: [i][/i]
URL: [url][/url]

Сообщение:

Прикрепить: