본문 바로가기

개발64

함수의 옵션을 블럭처럼 조합해서 사용해보자~ 소스를 짜다 보면 함수에 옵션을 넣어야 할 경우가 종종 있다 function(value1, value2, OPTION); 이런식으로 말이다. 그런데 비트연산자로 조합해서 쓰면 더 유용하다 function(value1, value2, OPTION1|OPTION2); 그렇다면 이 비트연산자 조합은 어떤식으로 적용되는 것일까? 먼저 "|"는 or로 두개중 하나만 참이면 참이 된다 예를 들면, 0 | 0 = 0 1 | 0 = 1 1 | 1 = 1 이것을 이용하면 두개의 조합이 가능하다 OPTION1 OPTION2 000 000 | 000 000 = 000 000 001 000 | 000 010 = 001 010 010 000 | 000 111 = 010 111 위와 같이 각각 한쪽을 000으로 비워두고 or을 .. 2015. 8. 24.
Fragment에서 startActivityForResult() 호출시 onActivityResult() requestCode 문제 Fragment에서 startActivityForResult()를 호출했을때 onActivityResult()의 requestCode가 잘못 올 때가 있다. 즉, 분명 requestCode를 100으로 호출했는데 65640와 같은 이상한 값이 나오는 경우이다. 해결방법은 간단하다. startActivityForResult()를 getActivity().startActivityForResult()로 바꾸면 된다. 아마도 Fragment에서 직접 호출하면 부모액티비티로 값이 전달되지 않는듯 하다. 도움이 되셨다면~ 정성으로 빚은 저희 앱! 많은 이용 바래요:) https://meorimal.com/index.html?tab=spaceship 우주선 - 방치형 인공지능 투자 체험기 미리 맛보는 인공지능 투자!.. 2015. 6. 22.
버튼 누름 효과를 만드는 2가지 방법 버튼이면 당연히 있어야할 누름효과! 눌렸을때와 누르지않았을때가 같다면 과연 버튼일까? 당연하지만 그래서 잃혀지기 쉬운 기능 버튼의 누름효과!! 안드로이드에서 기본적인 버튼은 누름효과가 있다. 하지만 나만의 예쁜 버튼을 만들려고 이미지를 넣으면 이런 효과는 사라진다. 이때 누름효과가 생기도록 하는 2가지 방법이 있다. 첫번째는 xml의 selector를 이용하는 것이다. res의 drawable 폴더에 button_selector.xml 파일을 만든다. 여기서 버튼의 일반이미지, 누름이미지를 다음과 같이 설정한다. 그리고 layout의 버튼에 selector를 적용한다. 두번째는 자바코드로 넣는 것이다. Button button = (Button)findViewById(R.id.Button); button.. 2015. 4. 19.
오로지 기울기 센서로만 가로세로 모드 체크하기 단말기를 가로 또는 세로모드로 고정시키고도 현재 가로로 눞여있는지 세로로 서있는지 알아봐야 할때가 있다. 이럴 때는 기울기 센서라고도 불리는 가속도 센서(Accelerometer Sensor)를 이용하면 간단하다. 아래는 세로모드에서 카메라로 사진을 찍었을 경우 단말기 상황(각도)에 맞게 사진을 회전시키는 예의 일부이다. mDegrees 각도로 사진을 회전시키면 된다. private SensorManager mSensorManager; private Sensor mAccSensor; private float mDegrees; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); se.. 2015. 2. 23.
역시 스레드는 필수! 아이폰과 안드로이드의 기본 스레드 사용법 비교 개발에 있어서 스레드는 당연 필수다. 그래서 모바일을 대표하는 ios와 android에서의 기본 스레드를 정리해 보겠다. ios와 android는 각각 objective-c와 java를 기반으로 하고 있으니 이 둘의 스레드 사용법을 살펴보면 되겠다. - ios selector에 스레드로 실행될 함수를 지정하고 object에는 함수로 넘어갈 파라미터를 지정한다. start를 호출하면 스레드가 시작된다. NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(backThread:) object:param]; [thread start]; - (void)backThread:(id)param { //여기에 스레드로 실행될 코드 작정 .. 2014. 12. 6.
Surface View에서 간단한 이미지버튼 손수 만들기 앱을 제작할때에는 버튼 클래스가 기본적으로 제공된다.. 하지만 SurfaceView 기반의 게임을 만들때는 그렇지 않기 때문에 손수 만들어야 한다.. 빠른 이해를 위해 모든 군더더기는 다 빼고 이미지로만 이루어진 버튼 클래스를 만들어 보겠다.. 클래스 public class GraphicButton { public static final int IMAGE_UP = 0; public static final int IMAGE_DOWN = 1; private Bitmap[] mImage; private Rect mRect; public int mImageNum; public GraphicButton(Rect rect) { mRect = rect; mImage = new Bitmap[2]; mImageNum =.. 2014. 10. 19.
게임에 꼭 필요한 난수, 간단하게 확률대로 발생시키기 게임을 만들때 수없이 사용되는 난수.. 이런 난수는 보통 오브젝트의 위치나 종류를 결정할때 사용된다. 예를 들어서 장애물이 임의의 위치에 나타나거나 보상아이템이 랜덤하게 나오는 경우이다. 하지만 이때에는 무작정 랜덤하게 나오는 것보다 장애물이 특정 위치에 더 자주 나온다던지, 보상아이템중 더 좋은 아이템은 적은 확률로 나온다던지 하고 싶을 경우가 있을것이다. 그래서 여기서는 난수를 확률대로 나오게 하는 간단한 나만의 방법을 소개하고자 한다. public class Rate { public int mTable[]; //확률 설정 public void set(int rate[]) { int table[] = new int[100]; //각각의 숫자들의 확률을 담을 테이블배열 int value = 0; //테.. 2014. 9. 14.
점의 선대칭 이동 공식을 코드로 짜보자 고1때 누구나 배우게 되는 직선의 대한 대칭이동! 이것이 내생에 정말로 활용될지는 몰랐다ㅎㅎ 앱을 만드는 개발자가 되면서 느끼는 것은 깊게는 아니더라도 이런 공식같은것이 있구나 하는정도만 알아나도 앱을 만드는데 무척이나 도움이 된다는 것이다..다시말해 깊게 공부할 필요가 없다ㅎㅎ 어차피 필요하게 되면 알아서 다시 공부한다ㅎㅎ 직선의 대한 대칭이동중 여기서는 점의 선대칭 이동을 코드로 변환해 보겠다.즉, 목적은 xy좌표점을 하나의 직선을 기준으로 선대칭이 되는 또하나의 xy좌표점을 찾는것이다. 먼저 선대칭 점을 찾는 공식은 이곳을 참고바란다. http://mathbang.net/465 http://www.mathfactory.net/node/367 여기서 이용할 내용은 대충 이렇다 1. 이동전 (x1,y1.. 2014. 8. 15.
[아이폰] 간단하고 편리한 난수 발생 함수 만들기 게임에서는 난수가 많이 사용된다. 안드로이드에 이어 아이폰에서 사용할 수 있는 간단한 난수발생 함수를 만들어 보았다 - 아이폰(오브젝티브C) - (int)randomNumber:(int)start :(int)end { //범위의 시작이 끝보다 클경우 또는 같을 경우 if (start > end) return 0; else if (start == end) return start; //시스템에서 난수값을 받아 범위에 맞게 재조정한다 int random = arc4random(); return start + ((random 2014. 6. 22.
[안드로이드] 간단하고 편리한 난수 발생 함수 만들기 게임을 만들다 보면 난수가 많이 필요하다특히 특정 범위의 난수가 그러하다 그래서 나름 안드로이드(자바), 아이폰(오브젝티브C)에서 사용할 수 있는 함수를 만들어 보았다 - 안드로이드(자바) public static final int randomNumber(int start, int end) {Random random = new Random();int result = 0;//범위의 시작이 끝보다 클경우 또는 같을 경우 if(start > end)return 0;else if(start == end)return start;//시스템에서 난수값을 받아 범위에 맞게 재조정한다result = (Math.abs(random.nextInt()) % (end - start + 1)) + start;return resu.. 2014. 6. 22.