ゲーム制作始めたい Hello SDL

このサイトがよくまとまってるのでありがたい!

tmick.net

ちょっとアレンジして60fpsでwindowの色がランダムに変わるようにした

//Using SDL and standard IO
#include <SDL2/SDL.h>
#include <stdio.h>
#include <random>

//Screen dimension constants
const int SCREEN_WIDTH = 640;
const int SCREEN_HEIGHT = 480;

int main(int argc, char* args[]) {
  //The window we'll be rendering to
  SDL_Window* window = NULL;
  
  //The surface contained by the window
  SDL_Surface* screenSurface = NULL;

  //Initialize SDL
  if(SDL_Init( SDL_INIT_VIDEO ) < 0){
    printf("SDL could not initialize! SDL_Error: %s\n", SDL_GetError());
  } else {
    //Create window
    window = SDL_CreateWindow("SDL Tutorial: 60 FPS random color", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN);
    if(window == NULL) {
      printf( "Window could not be created! SDL_Error: %s\n", SDL_GetError() );
    } else {
      //Get window surface
      screenSurface = SDL_GetWindowSurface(window);

      std::random_device rnd;

      for (int i = 0; i < 1000; i++) {

        int R = rnd() % 256;
        int G = rnd() % 256;
        int B = rnd() % 256;

        //Fill the surface white
        SDL_FillRect(screenSurface, NULL, SDL_MapRGB( screenSurface->format, R, G, B));
            
        //Update the surface
        SDL_UpdateWindowSurface(window);

        //Wait two seconds
        SDL_Delay(1000.0/60);
      }
    }
  }

  //Destroy window
  SDL_DestroyWindow(window);

  //Quit SDL subsystems
  SDL_Quit();

  return 0;
}

ゲーム制作始めたい

ゲーム作ったことないけど、golangを使ってゲーム制作がしたくなったのでやっていく (競プロ関係なくなってる...)

まずはC++でやっていく(チュートリアルとか資料が多そうなので)

OSはMac

やっていく

とりあえずSDLチュートリアルやっていく

  1. 開発環境構築

  2. Hello SDL

Lazy Foo' Productions - Hello SDL: Your First Graphics Window

参考

tmick.net

goの場合はこれが使えそう。

github.com

SRM684D1Easy CliqueParty

久しぶりの投稿。

方針

両サイドを固定すると、集合Dの最大値が決まる。

左端からk-smoothを満たすように選んで行く。

コード

class CliqueParty {
    public:
    int maxsize(vector<int> a, int k) {
        int N = a.size();
        sort(a.begin(), a.end());
        int ans = 0;
        FOR(l,0,N) {
            FOR(r,l+1,N) {
                ll mx = a[r] - a[l];
                int alive[55];
                FOR(i,l,r+1) alive[i] = true;
                FOR(i,l,r) {
                    if(!alive[i]) continue;
                    FOR(j,i+1,r+1) {
                        if(ll(a[j]-a[i])*k<mx) {
                            if(j == r) alive[i] = false;
                            else alive[j] = false;
                        } else break;
                    }
                }
                int cnt = 0;
                FOR(i,l,r+1) {
                    cnt += alive[i];
                }
                ans = max(ans, cnt);
            }
        }
        return ans;
    }
};