int sp_frighten(struct castorder * co) { fighter * fi = co->magician.fig; int level = co->level; double power = co->force; const spell * sp = co->sp; battle *b = fi->side->battle; unit *mage = fi->unit; int at_malus = 0; int df_malus = 0; int force = 0; int enemies = 0; int targets = 0; message *m; at_malus = level - 4; if (at_malus < 1) at_malus = 1; df_malus = 2; force = (int)get_force(power, 2); enemies = count_enemies(b, fi, FIGHT_ROW, BEHIND_ROW - 1, SELECT_ADVANCE); if (!enemies) { m = msg_message("spell_out_of_range", "mage spell", fi->unit, sp); message_all(b, m); msg_release(m); return 0; } while (force && enemies) { troop dt = select_enemy(fi, FIGHT_ROW, BEHIND_ROW - 1, SELECT_ADVANCE); fighter *df = dt.fighter; --enemies; if (!df) break; assert(!helping(fi->side, df->side)); if (df->person[dt.index].flags & FL_COURAGE) { df->person[dt.index].flags &= ~(FL_COURAGE); } if (!is_magic_resistant(mage, df->unit, 0)) { df->person[dt.index].attack -= at_malus; df->person[dt.index].defense -= df_malus; targets++; } --force; } m = msg_message("cast_frighten_effect", "mage spell amount", fi->unit, sp, targets); message_all(b, m); msg_release(m); return level; }
static int count_healable(battle * b, fighter * df) { side *s; int healable = 0; for (s = b->sides; s != b->sides + b->nsides; ++s) { if (helping(df->side, s)) { healable += s->casualties; } } return healable; }
int sp_windshield(struct castorder * co) { fighter * fi = co->magician.fig; int level = co->level; double power = co->force; const spell * sp = co->sp; battle *b = fi->side->battle; int force, at_malus; int enemies; message *m; switch (sp->id) { case SPL_WINDSHIELD: force = (int)get_force(power, 4); at_malus = level / 4; break; default: force = (int)power; at_malus = 2; } enemies = count_enemies(b, fi, BEHIND_ROW, BEHIND_ROW, SELECT_ADVANCE); if (!enemies) { m = msg_message("battle::out_of_range", "mage spell", fi->unit, sp); message_all(b, m); msg_release(m); return 0; } while (force && enemies) { troop dt = select_enemy(fi, BEHIND_ROW, BEHIND_ROW, SELECT_ADVANCE); fighter *df = dt.fighter; --enemies; if (!df) break; assert(!helping(fi->side, df->side)); if (df->person[dt.index].missile) { /* this suxx... affects your melee weapon as well. */ df->person[dt.index].attack -= at_malus; --force; } } m = msg_message("cast_storm_effect", "mage spell", fi->unit, sp); message_all(b, m); msg_release(m); return level; }
int sp_tiredsoldiers(struct castorder * co) { fighter * fi = co->magician.fig; int level = co->level; double power = co->force; const spell * sp = co->sp; battle *b = fi->side->battle; unit *mage = fi->unit; int n = 0; int force = (int)(power * power * 4); message *m; if (!count_enemies(b, fi, FIGHT_ROW, BEHIND_ROW, SELECT_ADVANCE | SELECT_FIND)) { message *m = msg_message("battle::out_of_range", "mage spell", fi->unit, sp); message_all(b, m); msg_release(m); return 0; } while (force) { troop t = select_enemy(fi, FIGHT_ROW, BEHIND_ROW, SELECT_ADVANCE); fighter *df = t.fighter; if (!df) break; assert(!helping(fi->side, df->side)); if (!(df->person[t.index].flags & FL_TIRED)) { if (!is_magic_resistant(mage, df->unit, 0)) { df->person[t.index].flags = df->person[t.index].flags | FL_TIRED; df->person[t.index].defence -= 2; ++n; } } --force; } m = msg_message("cast_tired_effect", "mage spell amount", fi->unit, sp, n); message_all(b, m); msg_release(m); return level; }
int main(int argc, char* argv[]) { struct sockaddr_in clientaddr; socklen_t addrlen; char c; int tmp=0; while(tmp<5){ pthread_mutex_init(&lock[tmp],NULL); pthread_mutex_lock(&lock[tmp]); createThread(tmp); tmp++; } //дефолтные значения char PORT[6]; ROOT = getenv("PWD");//возвращает значение переменной окружения strcpy(PORT,"10000"); //копирование из второй строки в первую. возвращает указатель на результирующую строку int slot=0; //парсим аргументы while ((c = getopt (argc, argv, "p:r:h")) != -1) switch (c) { case 'r': ROOT = malloc(strlen(optarg));//распределяет байты в памяти и возвращает указатель на память. strlen - длина строки, optarg - строковое значение параметра strcpy(ROOT,optarg); break; case 'p': strcpy(PORT,optarg); break; case 'h': helping(); case '?': fprintf(stderr,"Wrong arguments given!!!\n"); exit(1); default: exit(1); } //установка всех элементов в -1 int i; for (i=0; i<CLIENTMAX; i++) clients[i]=-1; startServer(PORT); printf("Server started at port no. %s%s%s with root directory as %s%s%s\n","\033[92m",PORT,"\033[0m","\033[92m",ROOT,"\033[0m"); int j=0; // прием соединений while (1) { addrlen = sizeof(clientaddr); clients[slot] = accept (listenfd, (struct sockaddr *) &clientaddr, &addrlen);//принять соединение на сокете (сокет, адрес другой стороны, длина адреса в байтах) if(j>4) { j=0; int k=0; int coeff=slot/5; while(k<5) { if(pthread_mutex_trylock(&lock[k])==0) createThread(k+5*coeff); k++; } } if (clients[slot]<0) error ("accept() error"); else { pthread_mutex_unlock(&lock[j]); } j++; while (clients[slot]!=-1) slot = (slot+1)%CLIENTMAX; } return 0; }
int main(int argc, char *argv[]) { SDL_Init(SDL_INIT_EVERYTHING); ekran = SDL_SetVideoMode( 800, 600, 32, SDL_SWSURFACE ); DrawableSDL::surface = ekran; SDL_Flip( ekran ); SDL_CDOpen(0); ekran->pixels; SDL_Event e; int frame_time; SDL_PollEvent(&e); FontFactory::initializeFont("simplePix", "pixelart.ttf", 10); SDL_Rect rect; rect.x=100; rect.y=10; rect.w=100; rect.h=100; TTF_Init(); Rectangle object1; object1.setColor(0xff, 0xff, 0xff); Rectangle object2; object2.setColor(0xf1, 0x00, 0xda); object2.setX(50); object1.setX(10); Container helping(100,30); //helping.add(&object1); Container root(10,10); SimpleScrollBar scroll(100, 100, 10, 150, 0, 1000, Orientation::horizontal); SimpleScrollBar scroll2(100, 85, 10, 150, 0, 1000, Orientation::horizontal); root.add(&scroll); Button ok(100, 100, 60, 20, "Here i am"); ok.setBorderSize(2); ok.setBackground(255,225,255); ok.setBorderColor(10,100,10); ok.setFontName("simplePix"); smth e_inst; ok+= *(new Delegate(&e_inst)); Button ok2(200, 200, 80, 20, "I am not here"); ok2.setBorderSize(2); ok2.setBackground(255,225,255); ok2.setBorderColor(10,100,10); ok2.setFontName("simplePix"); root.add(&ok); root.add(&scroll2); root.add(&ok2); //ok.setEnable(false); ListBoxElementSDL el(50); el.setText("hello"); el.setSelection(false); el.cut(4, down); ListBoxElementSDL el1(50); el1.setText("welcome"); el1.setSelection(false); ListBoxElementSDL el2(50); el2.setText("hejo"); el2.setSelection(false); ListBoxElementSDL el3(50); el3.setText("hejo2"); ListBoxElementSDL el4(50); el4.setText("hejo1"); ListBoxElementSDL el5(50); el5.setText("hejo3"); ListBoxElementSDL el6(50); el6.setText("Witam"); ListBoxElementSDL el7(50); el7.setText("Witam"); ListBoxSDL list(500, 200, 100, 50, 2); list.add(&el); list.add(&el1); list.add(&el2); list.add(&el3); list.add(&el4); list.add(&el5); list.add(&el6); list.add(&el7); root.add(&list); MovingRectangle movrect; MovingRectangle movrect2; movrect2.setColor(0x43, 0x52, 0xFF); //root.add(&movrect); //root.add(&movrect2); Uint32 color = SDL_MapRGB(ekran->format, 0xff, 0xff, 0xff); Uint32 color2 = SDL_MapRGB(ekran->format, 0x00, 0xff, 0xff); short int r=0,g=0,b=0; while(true) { frame_time = SDL_GetTicks(); ok.setX(scroll.getValue()); ok.setY(scroll2.getValue()); SDL_FillRect(ekran, &(ekran->clip_rect), color2); root.draw(0,0); if(SDL_PollEvent(&e)) { if(e.type == SDL_QUIT) { SDL_Quit(); return 0; } root.spreadEvent(e); } SDL_Flip(ekran); if((SDL_GetTicks() - frame_time) < 1000/FPS) SDL_Delay(1000/FPS - (SDL_GetTicks() - frame_time)); } return 0; }