static void end_const(void) { drop(QI); drop(QT); drop(QF); drop(QY); drop(Qvoid); drop(Qcons); drop(Qnull); drop(Qeval); drop(Qlater); drop(Qput); drop(Qnl); drop(Qfput); drop(Qfnl); drop(Qtuple); drop(Qparse_file); drop(Qevaluate); close_random(); }
void finish(int n) { Rule_t* r; int i; /* * old error intercept */ if (!state.hold && (r = internal.error) && (r->property & (P_target|P_functional)) == P_target) { state.hold = null; if (n && error_info.errors && !state.compileonly && !state.interrupt) { if (r->status == NOTYET) maketop(r, P_dontcare|P_foreground, NiL); state.hold = 0; if (r->status == EXISTS) { r->status = NOTYET; return; } } } /* * children exit without cleanup */ if (getpid() != state.pid) _exit(n); unparse(0); switch (state.finish) { case 0: /* * disable listing and wait for any jobs to finish */ state.finish++; alarm(0); state.list = 0; message((-1, "%s cleanup", state.interrupt ? "interrupt" : n > 0 ? "error" : "normal")); complete(NiL, NiL, NiL, 0); /*FALLTHROUGH*/ case 1: /* * make the done trap */ state.finish++; if (!state.compileonly && (r = getrule(external.done))) maketop(r, P_dontcare, NiL); /*FALLTHROUGH*/ case 2: /* * make the makedone trap */ state.finish++; if (!state.compileonly && (r = getrule(external.makedone))) maketop(r, P_dontcare, NiL); /*FALLTHROUGH*/ case 3: /* * wait for any job(s) to finish */ state.finish++; complete(NiL, NiL, NiL, 0); /*FALLTHROUGH*/ case 4: /* * put all jobs in foreground and save state */ state.finish++; state.jobs = 0; savestate(); /*FALLTHROUGH*/ case 5: /* * clean up temporaries */ state.finish++; remtmp(1); /*FALLTHROUGH*/ case 6: /* * drop the coshell */ state.finish++; drop(); /*FALLTHROUGH*/ case 7: /* * dump */ state.finish++; if (state.test & 0x00002000) { Vmstat_t vs; vmstat(Vmheap, &vs); error(0, "vm region %zu segments %zu busy %zu:%zu free %zu:%zu", vs.extent, vs.n_seg, vs.n_busy, vs.s_busy, vs.n_free, vs.s_free); } dump(sfstdout, error_info.trace <= -14); /*FALLTHROUGH*/ case 8: /* * final output */ state.finish++; if (state.errors && state.keepgoing && !n) n = 1; if (state.mam.out) { if (state.mam.regress) sfprintf(state.mam.out, "%sinfo finish regression\n", state.mam.label); else if (state.mam.dynamic || *state.mam.label) sfprintf(state.mam.out, "%sinfo finish %lu %d\n", state.mam.label, CURTIME, n); } for (i = 0; i < elementsof(state.io); i++) if (state.io[i] != sfstdin && state.io[i] != sfstdout && state.io[i] != sfstderr) sfclose(state.io[i]); if (state.errors && state.keepgoing) error(2, "*** %d action%s failed", state.errors, state.errors == 1 ? null : "s"); message((-1, "%s exit", state.interrupt ? "interrupt" : n ? "error" : "normal")); break; } if (state.interrupt) { n = 3; signal(state.interrupt, SIG_DFL); kill(getpid(), state.interrupt); pause(); } exit(n); }
LuaRef::~LuaRef() { drop(); }
void RGraphicsViewQt::dropEvent(QDropEvent* event) { emit drop(event); event->accept(); }
// /// Main window event handler /// /// \param window the window associated with the event. /// \param message the Windows event type. /// \param wParam the pointer parameter. /// \param lParam the integer parameter. /// /// \return zero, or whatever the default window handler returns. // LRESULT CALLBACK main_window_proc(HWND window, UINT message, WPARAM wParam, LPARAM lParam) { application_t* app(hackery::cast<application_t*>(::GetWindowLongPtr(window, GWLP_USERDATA))); bool handled(true); if (message == WM_CLOSE) { ::PostQuitMessage(0); } if (message == WM_COMMAND) { //HMENU menu(::GetMenu(window)); WORD command(LOWORD(wParam)); switch(command) { case ADOBE_ABOUT: ::MessageBox(NULL, _T("Adobe Begin Copyright 2005-2007 Adobe Systems Incorporated"), _T("About Adobe Begin"), MB_OK); break; case ADOBE_QUIT: ::PostQuitMessage(0); break; case ADOBE_REFRESH_VIEW: app->display_window(); break; case ADOBE_REFRESH_SHEET: app->load_sheet(); break; case ADOBE_NORMAL_DIALOG_SIZE: app->set_dialog_size( size_normal_s ); app->display_window(); break; case ADOBE_SMALL_DIALOG_SIZE: app->set_dialog_size( size_small_s ); app->display_window(); break; case ADOBE_MINI_DIALOG_SIZE: app->set_dialog_size( size_mini_s ); app->display_window(); break; #ifndef NDEBUG case ADOBE_SHOW_WIDGET_FRAMES: app->frame_window(); break; case ADOBE_CLEAR_WIDGET_FRAMES: app->clear_window_frames(); break; #else case ADOBE_SHOW_WIDGET_FRAMES: case ADOBE_CLEAR_WIDGET_FRAMES: system_beep(); break; #endif #if 0 case ADOBE_SERIALIZE_WIDGETS: app->serialize_connections(); break; #endif case ADOBE_RUN_MODAL: app->run_current_as_modal(); break; case ADOBE_LOCALIZATION_ENUS: adobe::implementation::top_frame().attribute_set_m.insert( std::make_pair(adobe::static_token_range("lang"), adobe::static_token_range("en_US"))); app->display_window(); break; case ADOBE_LOCALIZATION_DEDE: adobe::implementation::top_frame().attribute_set_m.insert( std::make_pair(adobe::static_token_range("lang"), adobe::static_token_range("de_DE"))); app->display_window(); break; case ADOBE_LOCALIZATION_JAJP: adobe::implementation::top_frame().attribute_set_m.insert( std::make_pair(adobe::static_token_range("lang"), adobe::static_token_range("ja_JP"))); app->display_window(); break; case ADOBE_LOCALIZATION_KOKR: adobe::implementation::top_frame().attribute_set_m.insert( std::make_pair(adobe::static_token_range("lang"), adobe::static_token_range("ko_KR"))); app->display_window(); break; case ADOBE_LOCALIZATION_PGPG: adobe::implementation::top_frame().attribute_set_m.insert( std::make_pair(adobe::static_token_range("lang"), adobe::static_token_range("pg_PG"))); app->display_window(); break; default: handled = false; } } else if (message == WM_DROPFILES) { HDROP drop(reinterpret_cast<HDROP>(wParam)); UINT numfiles(::DragQueryFile(drop, 0xFFFFFFFF, NULL, 0)); for (UINT i(0); i < numfiles; ++i) { UINT size_needed(::DragQueryFile(drop, i, NULL, 0)); std::string buffer(size_needed + 1, 0); ::DragQueryFileA(drop, i, &buffer[0], size_needed + 1); std::string temp(&buffer[0]); if (temp.rfind(".adm") == temp.size() - 4) app->set_adam_file(boost::filesystem::path(temp.c_str(), boost::filesystem::native)); else if (temp.rfind(".eve") == temp.size() - 4) app->set_eve_file(boost::filesystem::path(temp.c_str(), boost::filesystem::native)); } ::DragFinish(drop); app->load_sheet(); } else if (message == WM_DESTROY) { } else { handled = false; } // // Pass it to the default window procedure if we haven't handled it. // return handled ? 0 : DefWindowProcW(window, message, wParam, lParam); }
void Ball::reset() { setPosX(4); setPosY(3); drop(); }
int main(void) { std::cout << "Hamming distance: " << hamming("ACCAGGG", "ACTATGG") << std::endl; std::vector<int> v = {1,3,5,67,33,56,44,45,67,76,67,789}; Functions fnc; fnc( from({9,8,7,6,5,4,3,2,1,0}) , map([](int i){ return i*i;}) , filter(_ > 5) , foreach([](int i){std::cout << i << " ";}) ); // std::cout << "------\n"; // _( Range(1000) // , Filter([](int i) {return (i % 2) == 0;}) // , Take(20) // , Map([](int i){return i+i;}) // , ForEach([](int i){std::cout << i << "\n";}) // ); // std::cout << "------\n"; // _( Range() // , Zip(From(v)) // , Zip(Range(100)) // , ForEach([](std::tuple<int, int, int>&& v){std::cout << std::get<0>(v) << ":" << std::get<1>(v) << ":" << std::get<2>(v) << "\n";}) // ); // std::cout << "------\n"; // _( From({A{2000}, A{3}}) // , Map(&A::value) // , Filter([](int i){return i > 10;}) // , ForEach([](int i){std::cout << i << "\n";}) // ); // std::cout << "------\n"; // _( From({A{2000}, A{3}}) // , Map(&A::x) // , Filter([](int i){return i > 10;}) // , ForEach([](int i){std::cout << i << "\n";}) // ); // std::cout << "------\n"; // _( Range(1000) // , Drop(998) // , ForEach([](int i){std::cout << i << "\n";}) // ); // std::cout << "------\n"; // _( Range(10, 0) // , Take(14) // , ForEach([](int i){std::cout << i << "\n";}) // ); // // std::cout << "------\n"; // int sum = _( Range(5) // , Reduce(0, [](int a, int b){ return a + b;}) // ); // std::cout << "Sum is: " << sum << "\n"; // std::cout << "------\n"; size_t perfCount = 100000000; boost::timer tm; std::vector<int> tv; int c = 0; for(size_t i = 0; i < perfCount; ++i) { int v = i * i; if(i < perfCount/2 && v%2) { tv.emplace_back(v); } ++c; }; std::cout << "\n------\n"; std::cout << "Raw: " << tm.elapsed() << "\n"; std::cout << "------\n"; tm.restart(); fnc( range(perfCount) , map([](int i) {return i * i;}) , filter([](int i){ return i % 2;}) , drop(perfCount/2) , into<std::vector<int>>() ); std::cout << "blue-fnc: " << tm.elapsed() << "\n"; // auto sample = []() // { // double x = (double)rand() / RAND_MAX; // double y = (double)rand() / RAND_MAX; // return (x*x + y*y) < 1 ? 1 : 0; // }; // // const int numSamples = 1000000; // auto count = _( Range(numSamples) // , Map([sample](int){ return sample();}) // , Reduce(0, [](int a, int b){ return a + b;}) // ); // // std::cout << "Pi: " << 4.0 * (double) count / (double) numSamples << "\n"; return EXIT_SUCCESS; }
/* discard this block */ static void Dfalse(void) { drop(); ignoreoff(); state(IS_FALSE_TRAILER); }
static void Delif (void) { drop(); ignoreoff(); state(IS_FALSE_MIDDLE); }
static void Sfalse(void) { drop(); ignoreoff(); state(IS_FALSE_PREFIX); }
static void Selse (void) { drop(); state(IS_TRUE_ELSE); }
/* output lacks group's start line */ static void Strue (void) { drop(); ignoreoff(); state(IS_TRUE_PREFIX); }
//! Деструктор. virtual ~Sequence() { drop(); }
void usbsend(void) { usb_keyboard_press(drop().i, keyboard_modifier_keys); };
void Telos2101Driver::drop(int bank,int console) { drop(bank); }
static void Delse (void) { drop(); state(IS_FALSE_ELSE); }
char* process_query(char* inquery, thread_data_p tdata) { int i=0; char *query; char querybuf[MAXQUERYLEN]; int pcount=0; int ql,found; char* res=NULL; char* database=DEFAULT_DATABASE; char* params[MAXPARAMS]; char* values[MAXPARAMS]; // first NULL values potentially left from earlier thread calls #if _MSC_VER #else tdata->db=NULL; #endif tdata->database=NULL; tdata->lock_id=0; tdata->intype=0; tdata->jsonp=NULL; tdata->format=1; tdata->showid=0; tdata->depth=MAX_DEPTH_DEFAULT; tdata->maxdepth=MAX_DEPTH_DEFAULT; tdata->strenc=2; tdata->buf=NULL; tdata->bufptr=NULL; tdata->bufsize=0; // or use your own query string for testing a la // inquery="db=1000&op=search&field=1&value=2&compare=equal&type=record&from=0&count=3"; // parse the query if (inquery==NULL || inquery[0]=='\0') { if (tdata->iscgi && tdata->method==POST_METHOD_CODE) return errhalt(CGI_QUERY_ERR,tdata); else return errhalt(NOQUERY_ERR,tdata); } ql=strlen(inquery); if (ql>MAXQUERYLEN) return errhalt(LONGQUERY_ERR,tdata); if (tdata->isserver) query=inquery; else { strcpy((char*)querybuf,inquery); query=(char*)querybuf; } //fprintf(stderr, "query: %s\n", query); pcount=parse_query(query,ql,params,values); if (pcount<=0) return errhalt(MALFQUERY_ERR,tdata); //for(i=0;i<pcount;i++) { // printf("param %s val %s\n",params[i],values[i]); //} // query is now successfully parsed: // find the database #ifdef DEFAULT_DBASE database=DEFAULT_DBASE; #endif if ((tdata->global)->conf->default_dbase.used>0) database=(tdata->global)->conf->default_dbase.vals[0]; for(i=0;i<pcount;i++) { if (strncmp(params[i],"db",MAXQUERYLEN)==0) { if ((values[i]!=NULL) && (values[i][0]!='\0')) { if (atoi(values[i])==0 && !(values[i][0]=='0' && values[i][1]=='\0')) { return errhalt(DB_PARAM_ERR,tdata); } database=values[i]; break; } } } tdata->database=database; // try to find jsonp for(i=0;i<pcount;i++) { if (strncmp(params[i],JSONP_PARAM,MAXQUERYLEN)==0) { tdata->jsonp=values[i]; break; } } //find the operation and dispatch found=0; for(i=0;i<pcount;i++) { if (strncmp(params[i],"op",MAXQUERYLEN)==0) { if (!strncmp(values[i],"count",MAXQUERYLEN)){ found=1; res=search(tdata,params,values,pcount,COUNT_CODE); break; } else if (!strncmp(values[i],"search",MAXQUERYLEN) || !strncmp(values[i],"select",MAXQUERYLEN)) { found=1; res=search(tdata,params,values,pcount,SEARCH_CODE); break; } else if (!strncmp(values[i],"insert",MAXQUERYLEN)) { found=1; res=insert(tdata,params,values,pcount); break; } else if (!strncmp(values[i],"update",MAXQUERYLEN)) { found=1; res=search(tdata,params,values,pcount,UPDATE_CODE); break; } else if (!strncmp(values[i],"delete",MAXQUERYLEN)){ found=1; res=search(tdata,params,values,pcount,DELETE_CODE); break; } else if (!strncmp(values[i],"create",MAXQUERYLEN)) { found=1; res=create(tdata,params,values,pcount); break; } else if (!strncmp(values[i],"drop",MAXQUERYLEN)) { found=1; res=drop(tdata,params,values,pcount); break; } else { return errhalt(UNKNOWN_OP_ERR,tdata); } } } if (!found) return errhalt(NO_OP_ERR,tdata); if (tdata->isserver) { if (tdata->inbuf!=NULL) { free(tdata->inbuf); tdata->inbuf=NULL; } return res; } else { print_final(res,tdata); // freeing here is not really necessary and wastes time: process exits anyway if (tdata->inbuf!=NULL) free(tdata->inbuf); if (res!=NULL) free(res); return NULL; } }
static void Dendif(void) { drop(); unnest(); }
int give() { int obj = -1, result = -1, person = 0, firstnumber, last1 = 0, last2 = 0; firstnumber = wordnumber; while (wordtype[++wordnumber] != OBJECT && wordvalue[wordnumber] != AMULET && wordvalue[wordnumber] != MEDALION && wordvalue[wordnumber] != TALISMAN && wordnumber <= wordcount); if (wordnumber <= wordcount) { obj = wordvalue[wordnumber]; if (obj == EVERYTHING) wordtype[wordnumber] = -1; last1 = wordnumber; } wordnumber = firstnumber; while ((wordtype[++wordnumber] != NOUNS || wordvalue[wordnumber] == obj) && wordnumber <= wordcount); if (wordtype[wordnumber] == NOUNS) { person = wordvalue[wordnumber]; last2 = wordnumber; } wordnumber = last1 - 1; if (person && testbit(location[position].objects,person)) if (person == NORMGOD && godready < 2 && !(obj == RING || obj == BRACELET)) puts("The goddess won't look at you."); else result = drop("Given"); else { puts("I don't think that is possible."); return(0); } if (result != -1 && (testbit(location[position].objects,obj) || obj == AMULET || obj == MEDALION || obj == TALISMAN)) { clearbit(location[position].objects,obj); Time++; ego++; switch(person) { case NATIVE: puts("She accepts it shyly."); ego += 2; break; case NORMGOD: if (obj == RING || obj == BRACELET) { puts("She takes the charm and puts it on. A little kiss on the cheek is"); puts("your reward."); ego += 5; godready += 3; } if (obj == AMULET || obj == MEDALION || obj == TALISMAN) { win++; ego += 5; power -= 5; if (win >= 3) { puts("The powers of the earth are now legitimate. You have destroyed the Darkness"); puts("and restored the goddess to her thrown. The entire island celebrates with"); puts("dancing and spring feasts. As a measure of her gratitude, the goddess weds you"); puts("in the late summer and crowns you Prince Liverwort, Lord of Fungus."); puts("\nBut, as the year wears on and autumn comes along, you become restless and"); puts("yearn for adventure. The goddess, too, realizes that the marriage can't last."); puts("She becomes bored and takes several more natives as husbands. One evening,"); puts("after having been out drinking with the girls, she kicks the throne particulary"); puts("hard and wakes you up. (If you want to win this game, you're going to have to\nshoot her!)"); clearbit(location[position].objects,MEDALION); wintime = Time; } } break; case TIMER: if (obj == COINS) { puts("He fingers the coins for a moment and then looks up agape. `Kind you are and"); puts("I mean to repay you as best I can.' Grabbing a pencil and cocktail napkin...\n"); printf( "+-----------------------------------------------------------------------------+\n"); printf( "| xxxxxxxx\\ |\n"); printf( "| xxxxx\\ CLIFFS |\n"); printf( "| FOREST xxx\\ |\n"); printf( "| \\\\ x\\ OCEAN |\n"); printf( "| || x\\ |\n"); printf( "| || ROAD x\\ |\n"); printf( "| || x\\ |\n"); printf( "| SECRET || ......... |\n"); printf( "| - + - || ........ |\n"); printf( "| ENTRANCE || ... BEACH |\n"); printf( "| || ... E |\n"); printf( "| || ... | |\n"); printf( "| // ... N <-- + --- S |\n"); printf( "| PALM GROVE // ... | |\n"); printf( "| // ... W |\n"); printf( "+-----------------------------------------------------------------------------+\n"); puts("\n`This map shows a secret entrance to the catacombs."); puts("You will know when you arrive because I left an old pair of shoes there.'"); } break; } } wordnumber = max(last1,last2); return(firstnumber); }
int main(){ int a, i;//カウンタ変数 int phase[MAXNUMBER];//波の位相の配列 int color[MAXNUMBER];//波の色の配列 int droparray[MAXNUMBER];//落ちる水滴の配列 float x;//円の中心x座標 float y;//円の中心y座標 float r[MAXNUMBER];//円の半径の配列 float scale;//減衰のための係数 float phasescale;//位相の減衰係数 float sum;//波を足し合わせる関数 int count;//カウント変数 int offset;//波の相殺 int flag;//フラグ変数 win=gopen(800,800);/*画面表示*/ winname(win,"final");/*題名*/ phasescale = 0.25; flag = 0; /*水滴の描画*/ for(a=0; a<=1; a++){ for(i=0; i<=150; i++){ background();//背景を描く関数 if(a==1){ newpen(win , 1); fillcirc(win, 270, 610, 6, 6); /*葉っぱの先の水滴を描く*/ } branch();//木の幹を書く関数 rightleaf();//上側の葉っぱを描く関数 underleaf();//下側の葉っぱを描く関数 mainleaf();//メインの葉っぱを描く関数 surfacewater();//水面を描く関数 newpen(win, 1); fillcirc(win, 426-i, 761-i, 5, 5); /*葉っぱの初期移動*/ msleep(50); } } /*波の初期設定*/ for(i=0; i < MAXNUMBER; i++){ color[i] = 128; phase[i] = -1; droparray[i]=-1; r[i]=(MAXLENGTH / MAXNUMBER) * i;//円の半径初期化 } x=300.0; y=300.0; layer(win, 0, 1); /*表示は 0 番、描画は 1 番レイヤーで*/ /*波が非同期に落ちる*/ while(1){ background();//背景を描く関数 /*葉っぱの先の水滴を描く*/ newpen(win , 1); fillcirc(win, 270, 610, 6, 6); branch();//木の幹を描く関数 rightleaf();//上側の葉っぱを描く関数 underleaf();//下側の葉っぱを描く関数 mainleaf();//メインの葉っぱを描く関数 surfacewater();//水面を描く関数 /*初期化*/ color[0] = 0; sum = 0; count = 0; for(i=0; i < MAXNUMBER; i++){ if(phase[i] >= 200){ phase[i] = -1; flag = 1; } if(phase[i] != -1){ scale = (MAXNUMBER - phase[i])*0.01; sum += 128*(sin(ENSHUU/MAXNUMBER-phasescale*phase[i])*scale); count++; msleep(3); } } if(count > 0){ color[0] = sum / count + 128 - offset; if(flag == 1){ offset += color[0] - color[1]; flag = 0; } if(offset > 0){ offset--; }else if(offset < 0){ offset++; } } if(color[0] == 0 || color[0] >= 255 ){ color[0] = 128; } for(i=MAXNUMBER-1; i>0; i--){ color[i]=color[i-1]; } for(i=MAXNUMBER-1; i>=0; i--) { if( r[i] > 0.0 ) { newhsvcolor(win, 200, color[i], 255); fillcirc(win, x, y, r[i], r[i]); } } if(drop(droparray) == 1){ for(i=0; i<MAXNUMBER; i++){ if(phase[i] == -1){ phase[i] = 0; break; } } } for(i=0; i<=MAXNUMBER; i++){ if(phase[i] != -1){ phase[i]++; } } copylayer(win, 1, 0); /*レイヤー 1 番の内容を 0 にコピー*/ msleep(40); } gclose(win);/*つける必要はないですけど開いたら閉じたかったのでつけました*/ return 0; }
int main(void) { char line[MAX_LINE]; entry *entryHead; //head of entry list snapshot *snapHead; //head of snapshot list entryHead = NULL; snapHead = NULL; while (true) { printf("> "); if (fgets(line, MAX_LINE, stdin) == NULL) { printf("\n"); command_bye(entryHead, snapHead); return 0; } //get command from the input line as well as a second parameter if it exists char *ptr = strtok(line, " "); char firstToken[MAX_COMMAND]; //stores a command strcpy(firstToken, ptr); ptr = strtok(NULL, " "); char secondToken[MAX_KEY]; //stores either a key or a second part of the command secondToken[0] = '\0'; //get rid of a new line character if it exists in the last valid token entered char *newLine; if (ptr != NULL) { strcpy(secondToken, ptr); newLine = strchr(secondToken, '\n'); } else { newLine = strchr(firstToken, '\n'); } if (newLine) { *newLine = 0; } //identify the command and call the right function to execute the command entered if (strcasecmp(firstToken, "BYE") == 0) { command_bye(entryHead, snapHead); return 0; } else if (strcasecmp(firstToken, "HELP") == 0) { command_help(); } else if (strcasecmp(firstToken, "LIST") == 0) { if (strcasecmp(secondToken, "ENTRIES") == 0) { list_entries(entryHead); } else if (strcasecmp(secondToken, "KEYS") == 0) { list_keys(entryHead); } else if(strcasecmp(secondToken, "SNAPSHOTS") == 0) { list_snapshots(snapHead); } else { printf("unknown\n"); } } else if (strcasecmp(firstToken, "GET") == 0) { get(secondToken, entryHead); } else if (strcasecmp(firstToken, "DEL") == 0) { entryHead = del(entryHead, secondToken); } else if (strcasecmp(firstToken, "PURGE") == 0) { entryHead = purge(secondToken, entryHead, snapHead); } else if (strcasecmp(firstToken, "SET") == 0) { if (ptr != NULL && secondToken[0] != '\0') { entryHead = set(ptr, secondToken, entryHead); } else { printf("invalid input\n"); } } else if (strcasecmp(firstToken, "PUSH") == 0 || strcasecmp(firstToken, "APPEND") == 0) { push_append(ptr, secondToken, entryHead, firstToken); } else if (strcasecmp(firstToken, "PICK") == 0) { ptr = strtok(NULL, " "); int index = atoi(ptr); pick(index, secondToken, entryHead); } else if (strcasecmp(firstToken, "PLUCK") == 0) { ptr = strtok(NULL, " "); int index = atoi(ptr); pluck(index, secondToken, entryHead); } else if (strcasecmp(firstToken, "POP") == 0) { pluck(1, secondToken, entryHead); } else if (strcasecmp(firstToken, "DROP") == 0) { snapHead = drop(snapHead, atoi(secondToken)); } else if (strcasecmp(firstToken, "ROLLBACK") == 0) { entryHead = checkout(atoi(secondToken), entryHead, snapHead); snapHead = remove_snapshots(atoi(secondToken), snapHead); } else if (strcasecmp(firstToken, "CHECKOUT") == 0) { entryHead = checkout(atoi(secondToken), entryHead, snapHead); } else if (strcasecmp(firstToken, "SNAPSHOT") == 0) { snapHead = take_snapshot(entryHead, snapHead); } else if (strcasecmp(firstToken, "MIN") == 0) { min(secondToken, entryHead); } else if (strcasecmp(firstToken, "MAX") == 0) { max(secondToken, entryHead); } else if (strcasecmp(firstToken, "SUM") == 0) { sum(secondToken, entryHead); } else if (strcasecmp(firstToken, "LEN") == 0) { len(secondToken, entryHead); } else if (strcasecmp(firstToken, "REV") == 0) { reverse(secondToken, entryHead); } else if (strcasecmp(firstToken, "UNIQ") == 0) { unique(secondToken, entryHead); } else if (strcasecmp(firstToken, "SORT") == 0) { sort(secondToken, entryHead); } else if (strcasecmp(firstToken, "DIFF") == 0) { diff(ptr, secondToken, entryHead); } else if (strcasecmp(firstToken, "INTER") == 0) { inter(ptr, secondToken, entryHead); } else if (strcasecmp(firstToken, "UNION") == 0) { union_oper(ptr, secondToken, entryHead); } else { printf("unknown\n"); } printf("\n"); } return 0; }
Publication::~Publication() { drop(); }
void DynamicGoo::moveToTarget() { //Stop to follow if the goo is dragged for the use if (isDragging()) { stopFollow(); return; } if (onGround && groundPoint!=getPPosition()) { onGround=false; } if (isFalling()) return; if (hasJoint()) { return; } if (!hasJoint() && !isDragging() && isOnGround() && target==NULL ) { emit this->nextTargetPlease(NULL); } if (following && !falling) { if (prevTarget) { if (!target->isLinked(prevTarget)) { drop(); return; } QPoint meTarget=target->getPPosition()-getPPosition(); if (toVec(meTarget).Length()>15+radius/10) { stopFollow(); fallDown(); return; } //Compute mx and my for the position float mx,my; mx=(target->getVPosition().x-prevTarget->getVPosition().x); my=(target->getVPosition().y-prevTarget->getVPosition().y); float d=qSqrt(mx*mx+my*my); float md=qSqrt(qPow((target->getVPosition().x-getVPosition().x),2)+qPow((target->getVPosition().y-getVPosition().y),2)); mx/=d; my/=d; float tx,ty; //Compute tehorical x and y tx=(getVPosition().x-prevTarget->getVPosition().x)/mx; ty=(getVPosition().y-prevTarget->getVPosition().y)/my; float yt=my*tx+prevTarget->getVPosition().y; float xt=mx*ty+prevTarget->getVPosition().x; //if my y position is different at least of 12 falldown and return if ((qAbs(getVPosition().y-yt)>getRadius() && qAbs(getVPosition().x-xt)>getRadius()) || (md>d+radius)) { stopFollow(); fallDown(); return; } } //this is a work around for the very ugly bug of the "FLYING GOOS" //description of the bug if no prevTarget is setted but target is and the goo tower start to fall down the goo start to fly //for reach his target! //check if prevtarget is not setted and target is if (!prevTarget && target && !target->isOnGround()) { //compute distance between target and me float d=(target->getVPosition()-getVPosition()).Length(); //if that distance is more than 25 falldown and return //PS: remember that 30 is a single point contact between two goos if (d>=radius*0.2) { stopFollow(); fallDown(); return; } else if (d<radius*0.2) { emit this->nextTargetPlease(target); body->SetLinearVelocity(b2Vec2(0,0)); return; } } b2Vec2 dP; if (target!=NULL /*&& target->getBody()!=NULL*/) dP=target->getVPosition()-this->getVPosition(); else { stopFollow(); fallDown(); return; } if (dP.Length()<=(radius-radius/4.0)/10.0) { emit this->nextTargetPlease(target); body->SetLinearVelocity(b2Vec2(0,0)); return; } if (!prevTarget) { b2Vec2 dvec=(target->getVPosition()-getVPosition()); float d=qSqrt(dvec.x*dvec.x+dvec.y*dvec.y); if (onGround && target->isOnGround() && d<distanceToJoint) { double omega =(dP.x>0 ? speed*body->GetMass() : -speed*body->GetMass()); body->SetAngularVelocity(omega); body->ApplyForceToCenter(body->GetMass()*body->GetWorld()->GetGravity()); } else if (!onGround && d<radius*2) { emit this->nextTargetPlease(target); body->SetLinearVelocity(b2Vec2(0,0)); return; dP.x=(dP.x>0 ? speed*2 : -speed*2); dP.y=body->GetMass()*body->GetWorld()->GetGravity().y; body->ApplyForceToCenter(dP); } else { body->SetGravityScale(1); stopFollow(); } } else { dP.x=dP.x*speed/dP.Length(); dP.y=dP.y*speed/dP.Length() ; body->SetLinearVelocity(dP); } } }
int main(void){ PGresult *result; PGconn *conn; int z; conn = PQconnectdb("host=localhost port=5432 dbname=dsienkiewicz user=dsienkiewicz password=aplikacje"); if(PQstatus(conn) == CONNECTION_OK) { printf("connection made\n"); //czyszczenie ekranu system("clear"); //menu do{ printf("\n 1 - Create table"); printf("\n 2 - Add sample data"); printf("\n 3 - Print"); printf("\n 4 - Add"); printf("\n 5 - Drop from table"); printf("\n 6 - Update"); printf("\n 7 - Search"); printf("\n 8 - Add Trigger"); printf("\n 9 - Drop Trigger"); printf("\n 10 - Drop Table"); printf("\n 11 - Exit"); printf("\n choice: "); scanf("%d", &z); switch(z){ case 1: doSQL(conn, "CREATE TABLE cars(id_car SERIAL PRIMARY KEY, make VARCHAR(20), model VARCHAR(20), price money, capacity numeric(8,1), yop date);"); break; case 2: addData(conn); break; case 3: print(conn); break; case 4: add(conn); break; case 5: drop(conn); break; case 6: update(conn); break; case 7: search(conn); break; case 8: createTrigger(conn); break; case 9: delTrigger(conn); break; case 10: dropTable(conn); break; } }while(z != 11); printf("Bye, bye ...\n"); } else printf("connection failed: %s\n", PQerrorMessage(conn)); PQfinish(conn); return EXIT_SUCCESS; }
ControlList::~ControlList() { drop(); }
/* It seems that this should never trigger ICMP errors. */ static verdict truncated(struct xlation *state, const char *what) { log_debug("The %s seems truncated.", what); return drop(state, JSTAT_SKB_TRUNCATED); }
//The message handling procedure for the game LRESULT WINAPI MessageHandler(HWND hWnd, //The window the message is for (ours in this case) UINT msg, //The message type WPARAM wParam, //The primary data for the message LPARAM lParam) //The secondary data for the message (if any) { //See what type of message it is switch(msg) { case WM_CHAR: //A character key was pressed { //Create a key message MessageCharacterKey key; //Set the character pressed (the wParam is the ascii value) key.character = wParam; //Broadcast the message to all systems CORE->BroadcastMessage(&key); break; } case WM_LBUTTONDOWN: { MouseButton m(MouseButton::LeftMouse,true,Vec2(WINDOWSSYSTEM->MousePosition.x,WINDOWSSYSTEM->MousePosition.y)); CORE->BroadcastMessage(&m); break; } case WM_RBUTTONDOWN: { MouseButton m(MouseButton::RightMouse,true,Vec2(WINDOWSSYSTEM->MousePosition.x,WINDOWSSYSTEM->MousePosition.y)); CORE->BroadcastMessage(&m); break; } case WM_LBUTTONUP: { MouseButton m(MouseButton::LeftMouse,false,Vec2(WINDOWSSYSTEM->MousePosition.x,WINDOWSSYSTEM->MousePosition.y)); CORE->BroadcastMessage(&m); break; } case WM_RBUTTONUP: { MouseButton m(MouseButton::RightMouse,false,Vec2(WINDOWSSYSTEM->MousePosition.x,WINDOWSSYSTEM->MousePosition.y)); CORE->BroadcastMessage(&m); break; } case WM_MOUSEMOVE: { WINDOWSSYSTEM->MousePosition = MAKEPOINTS( lParam ); MouseMove m(Vec2(WINDOWSSYSTEM->MousePosition.x,WINDOWSSYSTEM->MousePosition.y)); CORE->BroadcastMessage(&m); break; } case WM_KEYDOWN: //A key was pressed //TODO: Handle any key logic you might need for game controls //Use virtual key codes (VK_LEFT, VK_RIGHT, VK_UP, VK_DOWN, VK_SPACE, etc.) //to detect specific keys (the wParam is the key pressed) and then //broadcast whatever message you need break; case WM_KEYUP: //A key was released //TODO: Handle any key logic you might need for game controls break; case WM_DESTROY: //A destroy message--time to kill the game //Make sure we shut everything down properly by telling Windows //to post a WM_QUIT message (the parameter is the exit code). PostQuitMessage(0); return 0; case WM_DROPFILES: { uint itemCount = DragQueryFile((HDROP)wParam, 0xFFFFFFFF,0,0); if (itemCount) { char buffer[512] = {0}; DragQueryFile((HDROP)wParam, 0, buffer, 512); DragFinish((HDROP)wParam); FileDrop drop(buffer); CORE->BroadcastMessage(&drop); } return 0; } case WM_SYSKEYDOWN: { //Eat the WM_SYSKEYDOWN message to prevent freezing the game when //the alt key is pressed switch( wParam ) { case VK_LMENU: case VK_RMENU: return 0;//Stop Alt key from stopping the winProc case VK_F4: //Check for Alt F4 DWORD dwAltKeyMask = ( 1 << 29 ); if( ( lParam & dwAltKeyMask ) != 0 ) PostQuitMessage(0); return 0; } return 0;// } } //TODO: Handle mouse messages and other windows messages //We didn't completely handle the message, so pass it on for Windows to handle. return DefWindowProc(hWnd, msg, wParam, lParam); }
static verdict inhdr4(struct xlation *state, const char *msg) { log_debug("%s", msg); return drop(state, JSTAT_HDR4); }
LuaRef& LuaRef::operator=( const LuaRef& other ) { drop(); gain(other.L, other.handle, other.refPtr); return *this; }
void Role::decipher(QString command) { this->command=command; QStringList arg=command.split(';'); QStringList cardIDList; int targetID,targetArea; int sourceArea; int cardID; int hitRate; int i,howMany; int team,gem,crystal; int dir,show; Card*card; Player*player; QList<Card*> cards; QString msg; QString flag; QString cardName; switch (arg[0].toInt()) { //回合开始 case 3: targetID=arg[1].toInt(); gui->logAppend("-----------------------------------"); gui->logAppend(playerList[targetID]->getRoleName()+QStringLiteral("回合开始")); playerArea->setCurrentPlayerID(targetID); if(targetID==dataInterface->getFirstPlayerID()) teamArea->addRoundBy1(); if(targetID!=myID) { isMyTurn=0; gui->setEnable(0); } else{ myRole->turnBegin(); } break; //应战询问 case 5: hitRate=arg[1].toInt(); cardID=arg[2].toInt(); targetID=arg[3].toInt(); sourceID=arg[4].toInt(); card=dataInterface->getCard(cardID); QSound::play("sound/Attack.wav"); if(targetID!=myID) { gui->setEnable(0); } else { gui->setEnable(1); msg=playerList[sourceID]->getRoleName()+QStringLiteral("对")+QStringLiteral("你")+QStringLiteral("使用了")+card->getName(); if (hitRate==2) return; if(hitRate==1) msg+=QStringLiteral(",该攻击无法应战"); gui->reset(); tipArea->setMsg(msg); myRole->attacked(card->getElement(),hitRate); } break; //弃牌询问 case 7: targetID=arg[1].toInt(); howMany=arg[2].toInt(); flag=arg[3]; msg=playerList[targetID]->getRoleName()+QStringLiteral("需要弃")+arg[2]+QStringLiteral("张手牌"); if(flag=="y") gui->logAppend(msg+QStringLiteral("(明弃)")); else gui->logAppend(msg+QStringLiteral("(暗弃)")); if(targetID!=myID) { gui->setEnable(0); } else { gui->setEnable(1); gui->reset(); drop(howMany); tipArea->setMsg(QStringLiteral("你需要弃")+arg[2]+QStringLiteral("张手牌")); } break; //摸牌 case 9: targetID=arg[1].toInt(); howMany=arg[2].toInt(); gui->logAppend(playerList[targetID]->getRoleName()+QStringLiteral("摸取")+arg[2]+QStringLiteral("张手牌")); if(targetID==myID) { cardIDList=arg[3].split(','); for(i=0;i<howMany;i++) { cardID=cardIDList[i].toInt(); card=dataInterface->getCard(cardID); dataInterface->addHandCard(card); } } break; //牌堆重洗 case 10: gui->logAppend(QStringLiteral("牌堆已重洗")); teamArea->setLeftCardNum(arg[1].toInt()); teamArea->setDroppedCardNum(0); QSound::play("sound/Shuffle.wav"); break; //士气改变 case 11: team=arg[1].toInt(); howMany=arg[2].toInt(); if(team) { red->setMorale(howMany); teamArea->update(); } else { blue->setMorale(howMany); teamArea->update(); } QSound::play("sound/Morale.wav"); break; //游戏结束 case 12: team=arg[1].toInt(); tipArea->win(team); QSound::play("sound/KO.wav"); break; //弃牌公告 case 13: targetID=arg[1].toInt(); howMany=arg[2].toInt(); flag=arg[3]; msg=playerList[targetID]->getRoleName()+QStringLiteral("丢弃了")+arg[2]+QStringLiteral("张手牌"); if(flag=="y") { cardIDList=arg[4].split(','); msg+=":"; cards.clear(); for(i=0;i<howMany;i++) { cardID=cardIDList[i].toInt(); card=dataInterface->getCard(cardID); msg+=card->getName()+"-"+card->getProperty()+" "; cards<<card; } showArea->showCards(cards); } gui->logAppend(msg); break; //命中公告 case 14: flag=arg[1]; targetID=arg[3].toInt(); sourceID=arg[4].toInt(); if(flag=="1") msg=playerList[sourceID]->getRoleName()+QStringLiteral("未命中")+playerList[targetID]->getRoleName(); else msg=playerList[sourceID]->getRoleName()+QStringLiteral("命中")+playerList[targetID]->getRoleName(); gui->logAppend(msg); QSound::play("sound/Hit.wav"); break; //星石改变 case 15: team=arg[1].toInt(); gem=arg[2].toInt(); crystal=arg[3].toInt(); if(team) { red->setGem(gem); red->setCrystal(crystal); teamArea->update(); } else { blue->setGem(gem); blue->setCrystal(crystal); teamArea->update(); } QSound::play("sound/Stone.wav"); break; //星杯改变 case 17: team=arg[1].toInt(); howMany=arg[2].toInt(); if(team) { red->setGrail(howMany); teamArea->update(); } else { blue->setGrail(howMany); teamArea->update(); } break; //能量改变 case 18: targetID=arg[1].toInt(); gem=arg[2].toInt(); crystal=arg[3].toInt(); player=playerList.at(targetID); player->setGem(gem); player->setCrystal(crystal); playerArea->update(); break; //移牌通告 case 19: howMany=arg[1].toInt(); cardIDList=arg[2].split(","); sourceID=arg[3].toInt(); sourceArea=arg[4].toInt(); targetID=arg[5].toInt(); targetArea=arg[6].toInt(); if(sourceID!=-1) { switch(sourceArea) { case 4: player=playerList.at(sourceID); player->changeHandCardNum(-howMany); break; case 5: cardID=cardIDList[0].toInt(); card=dataInterface->getCard(cardID); playerList[sourceID]->removeBasicStatus(card); break; case 6: player = playerList.at(sourceID); player->changeCoverCardNum(-howMany); break; } } if(targetID!=-1) { switch(targetArea) { case 4: player=playerList.at(targetID); player->changeHandCardNum(howMany); break; case 5: cardID=cardIDList[0].toInt(); card=dataInterface->getCard(cardID); cardName=card->getName(); if(cardName==QStringLiteral("中毒")) playerList[targetID]->addBasicStatus(0,card); if(cardName==QStringLiteral("虚弱")) playerList[targetID]->addBasicStatus(1,card); if(cardName==QStringLiteral("圣盾")||card->getSpecialityList().contains(QStringLiteral("天使之墙"))) playerList[targetID]->addBasicStatus(2,card); if(card->getType()=="attack"&&card->getProperty()==QStringLiteral("幻")) playerList[targetID]->addBasicStatus(3,card); if(card->getSpecialityList().contains(QStringLiteral("威力赐福"))) playerList[targetID]->addBasicStatus(4,card); if(card->getSpecialityList().contains(QStringLiteral("迅捷赐福"))) playerList[targetID]->addBasicStatus(5,card); QSound::play("sound/Equip.wav"); break; case 6: player=playerList.at(targetID); player->changeCoverCardNum(howMany); break; } } if(sourceID==-1){ switch(sourceArea) { case 1: teamArea->changeLeftCardNum(-howMany); break; case 2: case 3: teamArea->changeDroppedCardNum(-howMany); break; } teamArea->update(); } if(targetID==-1) if(targetArea==2||targetArea==3){ teamArea->changeDroppedCardNum(howMany); teamArea->update(); } playerArea->update(); break; //物伤通告 case 20: targetID=arg[1].toInt(); sourceID=arg[3].toInt(); gui->logAppend(playerList[sourceID]->getRoleName()+QStringLiteral("对")+playerList[targetID]->getRoleName()+QStringLiteral("造成了")+arg[2]+QStringLiteral("点攻击伤害")); break; //法术通告 case 21: targetID=arg[1].toInt(); sourceID=arg[3].toInt(); gui->logAppend(playerList[sourceID]->getRoleName()+QStringLiteral("对")+playerList[targetID]->getRoleName()+QStringLiteral("使用的")+arg[4]+QStringLiteral("造成了")+arg[2]+QStringLiteral("点法术伤害")); break; //虚弱询问 case 22: targetID=arg[1].toInt(); gui->logAppend(QStringLiteral("等待")+playerList[targetID]->getRoleName()+QStringLiteral("虚弱响应")); if(targetID!=myID) { gui->setEnable(0); } else { gui->setEnable(1); gui->reset(); state=7; decisionArea->enable(0); decisionArea->enable(1); tipArea->setMsg(QStringLiteral("你被虚弱了,【确定】跳过行动阶段,【取消】摸")+arg[2]+QStringLiteral("张牌")); } break; //虚弱结果 case 24: targetID=arg[1].toInt(); if(arg[2]=="0") gui->logAppend(playerList[targetID]->getRoleName()+QStringLiteral("选择跳过行动阶段")); else gui->logAppend(playerList[targetID]->getRoleName()+QStringLiteral("选择摸")+arg[3]+QStringLiteral("张牌挣脱")); break; //圣盾移除通告 case 25: targetID=arg[1].toInt(); gui->logAppend(playerList[targetID]->getRoleName()+QStringLiteral("的圣盾被移除")); break; //魔弹询问 case 26: int nextID; targetID=arg[1].toInt(); sourceID=arg[2].toInt(); howMany=arg[3].toInt(); nextID=arg[4].toInt(); gui->logAppend(playerList[sourceID]->getRoleName()+QStringLiteral("对")+playerList[targetID]->getRoleName()+QStringLiteral("使用了魔弹,目前伤害为:")+arg[3]+QStringLiteral("点")); if(targetID!=myID) { gui->setEnable(0); } else { gui->setEnable(1); myRole->moDaned(nextID,sourceID,howMany); } break; //卡牌通告 case 28: cardID=arg[1].toInt(); targetID=arg[2].toInt(); sourceID=arg[3].toInt(); flag=arg[4]; card=dataInterface->getCard(cardID); cardName=card->getName(); if(flag=="1"){ cards.clear(); cards<<card; showArea->showCards(cards); } if(card->getElement()!="light") gui->logAppend(playerList[sourceID]->getRoleName()+QStringLiteral("对")+playerList[targetID]->getRoleName()+QStringLiteral("使用了")+cardName); else gui->logAppend(playerList[sourceID]->getRoleName()+QStringLiteral("使用圣光抵御")); break; //行动阶段 flag 0-所有行动,1-攻击行动,2-法术行动,3-特殊行动,4-攻击或法术行动 case 29: targetID=arg[1].toInt(); flag=arg[2]; if(targetID!=myID) { isMyTurn=0; gui->setEnable(0); actionFlag=-1; } else { gui->setEnable(1); if(flag=="0") myRole->normal(); else if(flag=="1") myRole->attackAction(); else if(flag=="2") myRole->magicAction(); else if(flag=="4") myRole->attackOrMagic(); if(arg[3]=="1") decisionArea->enable(3); } break; //无法行动公告 case 31: targetID=arg[1].toInt(); msg=playerList[targetID]->getRoleName()+QStringLiteral("宣告无法行动"); gui->logAppend(msg); break; //治疗改变 case 32: targetID=arg[1].toInt(); howMany=arg[2].toInt(); playerList[targetID]->setCrossNum(howMany); playerArea->update(); QSound::play("sound/Cure.wav"); break; //治疗询问 case 33: targetID=arg[1].toInt(); howMany=arg[2].toInt(); flag=arg[3]; gui->reset(); if(targetID==myID) myRole->cure(playerList[myID]->getCrossNum(),howMany,flag.toInt(),arg[4].toInt()); break; //技能响应询问 case 35: targetID=arg[1].toInt(); flag=arg[2]; msg=QStringLiteral("等待")+playerList[targetID]->getRoleName()+flag+QStringLiteral("响应"); gui->logAppend(msg); gui->reset(); gui->setEnable(0); if(targetID==myID) { gui->setEnable(1); myRole->askForSkill(flag); } else gui->setEnable(0); break; //信息通告 case 38: gui->logAppend(arg[1]); if(arg[1].contains(QStringLiteral("发动"))) QSound::play("sound/Skill.wav"); break; //角色形态转换通知 case 39: targetID=arg[1].toInt(); flag=arg[2]; if(flag=="0") { playerList[targetID]->setTap(0); msg=playerList[targetID]->getRoleName()+QStringLiteral("返回")+arg[3]; } else { playerList[targetID]->setTap(1); msg=playerList[targetID]->getRoleName()+QStringLiteral("进入")+arg[3]; } playerArea->update(); gui->logAppend(msg); break; //手牌上限变更通知 case 40: targetID=arg[1].toInt(); howMany=arg[2].toInt(); playerList[targetID]->setHandCardsMax(howMany); playerArea->update(); break; //获得手牌通告 case 41: targetID=arg[1].toInt(); flag=arg[2]; howMany=arg[3].toInt(); gui->logAppend(playerList[targetID]->getRoleName()+QStringLiteral("获得")+arg[3]+QStringLiteral("张手牌")); if(targetID==myID) { cardIDList=arg[4].split(','); for(i=0;i<howMany;i++) { cardID=cardIDList[i].toInt(); card=dataInterface->getCard(cardID); dataInterface->addHandCard(card); } } break; //额外行动询问 case 42: targetID=arg[1].toInt(); gui->logAppend(QStringLiteral("等待")+playerList[targetID]->getRoleName()+QStringLiteral("额外行动响应")); if(targetID==myID) { gui->setEnable(1); myRole->additionalAction(); } else gui->setEnable(0); break; //专属变更 case 43: targetID=arg[1].toInt(); msg=arg[2]; playerList.at(targetID)->setSpecial(msg.toInt(),arg[3].toInt()); playerArea->update(); break; //盖牌通告 case 48: targetID=arg[1].toInt(); howMany=arg[2].toInt(); dir = arg[4].toInt(); show = arg[5].toInt(); cardIDList=arg[3].split(','); if(targetID==myID) { for(i=0;i<howMany;i++) { cardID=cardIDList[i].toInt(); card=dataInterface->getCard(cardID); if(dir == 0) dataInterface->addCoverCard(card); else dataInterface->removeCoverCard(card); } } if(dir == 0) gui->logAppend(arg[2]+QStringLiteral("张牌加入玩家") + playerList[targetID]->getRoleName()+QStringLiteral("盖牌区")); else { if(show == 0) gui->logAppend(QStringLiteral("玩家") + playerList[targetID]->getRoleName() + QStringLiteral("移除") + arg[2] + QStringLiteral("张盖牌")); else { QList<Card*> cards; QString log = QStringLiteral("玩家") + playerList[targetID]->getRoleName() + QStringLiteral("移除") + arg[2] + QStringLiteral("张盖牌:"); for(int i = 0;i < howMany;i++) { cards << dataInterface->getCard(cardIDList[i].toInt()); log += QStringLiteral("[") + cards.at(i)->getName() + QStringLiteral("]"); } gui->logAppend(log); showArea->showCards(cards); } } break; //标记变更 case 45: targetID=arg[1].toInt(); flag=arg[2]; howMany=arg[3].toInt(); playerList.at(targetID)->setToken(flag.toInt(),howMany); playerArea->update(); break; //盖牌弃牌 case 49: targetID=arg[1].toInt(); howMany=arg[2].toInt(); flag=arg[3]; msg=playerList[targetID]->getRoleName()+QStringLiteral("需要弃")+arg[2]+QStringLiteral("张盖牌"); if(flag=="y") gui->logAppend(msg+QStringLiteral("(明弃)")); else gui->logAppend(msg+QStringLiteral("(暗弃)")); if(targetID!=myID) { gui->setEnable(0); } else { gui->setEnable(1); gui->reset(); dropCover(howMany); tipArea->setMsg(QStringLiteral("你需要弃")+arg[2]+QStringLiteral("张盖牌")); } break; //天使祝福 case 750: targetID=arg[1].toInt(); howMany=arg[2].toInt(); msg=QStringLiteral("等待")+playerList[targetID]->getRoleName()+QStringLiteral("天使祝福(给牌)响应"); gui->logAppend(msg); if(targetID!=myID) { isMyTurn=0; gui->setEnable(0); } else { gui->setEnable(1); TianShiZhuFu(howMany); } break; //魔爆冲击(弃牌) case 850: targetID=arg[1].toInt(); msg=QStringLiteral("等待")+playerList[targetID]->getRoleName()+QStringLiteral("魔爆冲击(弃牌)响应"); gui->logAppend(msg); if(targetID!=myID) { isMyTurn=0; gui->setEnable(0); } else { gui->setEnable(1); MoBaoChongJi(); } break; //充盈(弃牌) case 2950: targetID=arg[1].toInt(); int color=arg[2].toInt(); msg=QStringLiteral("等待")+playerList[targetID]->getRoleName()+QStringLiteral("充盈(弃牌)响应"); gui->logAppend(msg); if(targetID!=myID) { isMyTurn=0; gui->setEnable(0); } else { gui->setEnable(1); ChongYing(color); } break; } }