//

//  main.c

//  project euler

//

//  Created by 김일호 on 2015. 4. 25..

//  Copyright (c) 2015년 김일호. All rights reserved.

//


#include <stdio.h>

#include <math.h>


int main(int argc, const char * argv[]) {

    long unsigned int total = 2;

    int prime;

    int n= 0;

    for(prime = 3; prime<2000000; prime++)

    {

        n = (int)sqrt((double)prime);

        

        if(prime % 2 != 0)

        {

            int flag = 0;

            for(int i = 2; i<= n; i++)

            {

                if(prime % i == 0) {flag = 1; break;}

            }

            if(flag == 0)

            {total += prime;}

            else

            {flag = 0;}

        }

    }

    printf("%ld\n", total);

    return 0;

}


/*

소수를 판별하기 위해 제곱근을 사용, 2부터 제곱근 까지 나누어진다면 flag를 1로 설정하여 아무것도 하지 않고 제곱근까지 떨어지지 않는다면 flag는 초기화값 0 이므로 더함. for문 안에 else를 써서 떨어지지 않는 값을 더하면 2부터 제곱근 까지 나누어 떨어지지 않는 수 모두를 더하기 때문에 flag를 설정

*/





'Programing > Algorithm' 카테고리의 다른 글

Selection Sort  (0) 2015.09.27
프로젝트 오일러 9번  (0) 2015.04.25
Recursive Fibonacci  (0) 2015.04.06
순환/재귀 팩토리알 구현  (0) 2015.04.06
3개의 숫자를 내림차순으로 정렬  (0) 2015.04.06
Posted by kimmayer

#include <iostream>

#include <Windows.h>

#include <random>

#include <time.h>

#include "Console.h"

//#include "enemy.h"

//#include "player.h"

#define ENEMY_COUNT 10

#define PLAYER_LIFE 1

using namespace std;


typedef struct enemy{

int x, y;

char name = 'e';

char blank = ' ';

}enemy;


typedef struct player{

int x= 40, y= 19;

char name = 'p';

int life = PLAYER_LIFE;

}player;


typedef struct player_shoot{

int x, y;

char name = '.';

};


typedef struct enemy_shoot{

int x, y;

int flag = 0;

char name = '*';

};


void enemy_shoot_initial();

void enemy_shoot_move();

int move_flag = 0;

int shoot_flag = 0;

int _gameover = 1;

void enemy_initial();

void enemy_move();

void player_shoot_initial();

void player_shoot_move();

void player_shoot_check();


enemy e;

player p;

player_shoot p_s;

enemy_shoot e_s[10];

enemy e_member[ENEMY_COUNT];


int main()

{

enemy_initial();

while (_gameover)

{

Initial();

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

MoveCursor(e_member[i].x, e_member[i].y);

cout << e_member[i].name;

}

enemy_move();

MoveCursor(p.x, p.y);

cout << p.name;

MoveCursor(p_s.x, p_s.y);

if (GetAsyncKeyState(VK_CONTROL)){

player_shoot_initial();

}

cout << p_s.name;

if (GetAsyncKeyState(VK_UP)){ p.y -= 1; }

if (GetAsyncKeyState(VK_DOWN)){ p.y += 1; }

if (GetAsyncKeyState(VK_LEFT)){ p.x -= 1; }

if (GetAsyncKeyState(VK_RIGHT)){ p.x += 1; }


enemy_shoot_initial();

enemy_shoot_move();

player_shoot_move();

player_shoot_check();

ClearScreen();

}

cout << "gameover";

}


void enemy_move()

{

if (move_flag == 0){

for (int i = 0; i < 10; i++)

{

e_member[i].x += 1;

}

if (e_member[9].x == 80)

move_flag = 1;

}

if (move_flag == 1){

for (int i = 0; i < 10; i++)

{

e_member[i].x -= 1;

}

if (e_member[0].x == 2)

move_flag = 0;

}

}

void enemy_initial()

{

for (int i = 0; i < 10; i++)

{

e_member[i].x = 20 + (i*2) ;

e_member[i].y = 5;

e_member[i].name = 'e';

}

}


void player_shoot_initial()

{

p_s.x = p.x;

p_s.y = p.y;

}

void player_shoot_move()

{

p_s.y -= 1;

}



void player_shoot_check()

{

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

if (p_s.x == e_member[i].x && p_s.y == e_member[i].y)

e_member[i].name = e_member[i].blank;

}

}



void enemy_shoot_initial()

{

int select;

srand(time(NULL));

select = rand() % 10;

e_s[select].flag = 1;

e_s[select].x = e_member[select].x;

e_s[select].y = e_member[select].y;

}

void enemy_shoot_move()

{

for (int i = 0; i < 10; i++)

{

if (e_s[i].flag == 1)

{

MoveCursor(e_s[i].x, e_s[i].y);

cout << e_s[i].name;

e_s[i].y += 1;

if (e_s[i].y == 22 )

{

e_s[i].name = ' ';

e_s[i].y = 0;

e_s[i].flag = 0;

}

if ((p.x == e_s[i].x && p.y == e_s[i].y))

{

p.life -= 1;

if (p.life == 0){

_gameover = 0;

}

}

}

}

}


구조체로 구현한 Invader 게임입니다. 버퍼를 따로 생성하지 않아 끊기는 현상이 있는데, 버퍼를 구현해서 끊기지 않도록 해야겠습니다.



'Programing > C++' 카테고리의 다른 글

-> , * 연산자 오버로딩  (0) 2015.09.02
간단한 오버라이딩  (0) 2015.09.02
클래스 template  (0) 2015.04.27
함수 Template  (0) 2015.04.27
이차원 동적 배열 입력 받아 생성하기  (0) 2015.02.10
Posted by kimmayer

2015. 4. 27. 23:56 Programing/C++

클래스 template

Template <typename T>

class C{

public:

.

.

.

.

};


로 구현한다. 클래스 선언 앞에 키워드만 붙이면 된다.


Template <typename T = double, int size = 10> 처럼 디폴트 매개변수의 값을 지정 할 수 있다.

'Programing > C++' 카테고리의 다른 글

간단한 오버라이딩  (0) 2015.09.02
구조체로 구현한 Invader  (0) 2015.06.09
함수 Template  (0) 2015.04.27
이차원 동적 배열 입력 받아 생성하기  (0) 2015.02.10
Tree 구현하기  (0) 2015.02.10
Posted by kimmayer

블로그 이미지
IT 기술들 정리, 독후감을 주로 남깁니다!
kimmayer

공지사항

Yesterday
Today
Total

달력

 « |  » 2024.3
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

글 보관함