コード例 #1
0
ファイル: standard.c プロジェクト: chkoreff/Fexl
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();
	}
コード例 #2
0
ファイル: main.c プロジェクト: nathanmkaya/ksh-arch
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);
}
コード例 #3
0
ファイル: lua_ref.cpp プロジェクト: NextRPG/Xihad
	 LuaRef::~LuaRef()
	 {
		 drop();
	 }
コード例 #4
0
ファイル: RGraphicsViewQt.cpp プロジェクト: fallenwind/qcad
void RGraphicsViewQt::dropEvent(QDropEvent* event) {
    emit drop(event);
    event->accept();
}
コード例 #5
0
ファイル: main.cpp プロジェクト: ilelann/legacy
//
/// 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);
}
コード例 #6
0
ファイル: ball.cpp プロジェクト: walsh06/grifball
void Ball::reset()
{
    setPosX(4);
    setPosY(3);
    drop();
}
コード例 #7
0
ファイル: examples.cpp プロジェクト: vstrisovsky/blue-fnc
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;
}
コード例 #8
0
ファイル: unifdef.c プロジェクト: AhmadTux/DragonFlyBSD
/* discard this block */
static void Dfalse(void) { drop();  ignoreoff(); state(IS_FALSE_TRAILER); }
コード例 #9
0
ファイル: unifdef.c プロジェクト: AhmadTux/DragonFlyBSD
static void Delif (void) { drop();  ignoreoff(); state(IS_FALSE_MIDDLE); }
コード例 #10
0
ファイル: unifdef.c プロジェクト: AhmadTux/DragonFlyBSD
static void Sfalse(void) { drop();  ignoreoff(); state(IS_FALSE_PREFIX); }
コード例 #11
0
ファイル: unifdef.c プロジェクト: AhmadTux/DragonFlyBSD
static void Selse (void) { drop();               state(IS_TRUE_ELSE); }
コード例 #12
0
ファイル: unifdef.c プロジェクト: AhmadTux/DragonFlyBSD
/* output lacks group's start line */
static void Strue (void) { drop();  ignoreoff(); state(IS_TRUE_PREFIX); }
コード例 #13
0
ファイル: sequence.hpp プロジェクト: FEDYL/eis_oracle_project
	//! Деструктор.
	virtual ~Sequence() { drop(); }
コード例 #14
0
void usbsend(void) {
  usb_keyboard_press(drop().i, keyboard_modifier_keys);
};
コード例 #15
0
void Telos2101Driver::drop(int bank,int console)
{
  drop(bank);
}
コード例 #16
0
ファイル: unifdef.c プロジェクト: AhmadTux/DragonFlyBSD
static void Delse (void) { drop();               state(IS_FALSE_ELSE); }
コード例 #17
0
ファイル: dserve.c プロジェクト: wendell1979/whitedb
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;  
  }  
}
コード例 #18
0
ファイル: unifdef.c プロジェクト: AhmadTux/DragonFlyBSD
static void Dendif(void) { drop();  unnest(); }
コード例 #19
0
ファイル: cmd5.c プロジェクト: JamesHagerman/retrobsd
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);
}
コード例 #20
0
ファイル: finalegg.c プロジェクト: shsm385/Animation
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;
}
コード例 #21
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;
}
コード例 #22
0
Publication::~Publication()
{
  drop();
}
コード例 #23
0
ファイル: dynamicgoo.cpp プロジェクト: twell/OpenGOO
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);
        }
    }
}
コード例 #24
0
ファイル: pr1.c プロジェクト: henio180/AplikacjeBazodanowe
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;
}
コード例 #25
0
ControlList::~ControlList()
{
  drop();
}
コード例 #26
0
ファイル: packet.c プロジェクト: NICMx/Jool
/* 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);
}
コード例 #27
0
	//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);
	}
コード例 #28
0
ファイル: packet.c プロジェクト: NICMx/Jool
static verdict inhdr4(struct xlation *state, const char *msg)
{
	log_debug("%s", msg);
	return drop(state, JSTAT_HDR4);
}
コード例 #29
0
ファイル: lua_ref.cpp プロジェクト: NextRPG/Xihad
	 LuaRef& LuaRef::operator=( const LuaRef& other )
	 {
		 drop();
		 gain(other.L, other.handle, other.refPtr);
		 return *this;
	 }
コード例 #30
0
ファイル: Role.cpp プロジェクト: Easycker/Asteriated_Grail
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;    
    }
}