얼마전에 애플왓치를 구입하게 되었는데,

조금 사용하다가 보니, 이게 왓치용 충전기를 추가 구입 안할 수가 없더군요

말하자면, 왓치를 사면, 전용 충전 버튼(?) 같은게 달린 USB C-type 케이블이 하나

따라오는데 이건 어디 멀리갈 땐 필수로 가지고 다녀야 겠고

 

집이 되었던, 사무실이 되었던 어디 고정으로 추가 왓치 충전기는 거의 필수인듯 싶어서

이 제품(카템 트인원 고속 무선충전 거치대 3in1)을 구입하게 되었습니다.

 

사실 비교적 최근에 아이폰용 고속 무선충전 패드 2개도 구입했고,

QC3.0을 지원한다는 삼성 정품 USB c-type 충전기도 역시 2개 구입했어서

이번 구입은 괜찮은 충전기를 산다기 보다는, 애플 왓치 충전만 되면 된다는 느낌으로

주문했는데,

깔끔한 포장이 우선 보기 좋아요

 

애플왓치 충전 잘 되고요^^

 

QC3.0 충전기가 기본 포함되어있고, 고속 무선 충전도 잘되네요

큰 기대 없이 주문한 물건인데, 받아보구서 상당한 만족감으로, 이거 득템이구나! 했어요


[output]

MOVE #1,D0
MOVE D0,-(SP)
MOVE #2,D0
ADD (SP)+,D0
MOVE D0,-(SP)
MOVE #3,D0
ADD (SP)+,D0
LEA a(PC),A0
MOVE D0,(A0)

[input]

a=1+2+3

[source]

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Cradle
{
    public partial class frmCradle : Form
    {
        public frmCradle()
        {
            InitializeComponent();
        }

        private void btnCompile_Click(object sender, EventArgs e)
        {
            string input = tbxInputCmd.Text;
            if (input.Length > 0)
            {
                Parser myparser = new Parser(input);
                myparser.Assignment();
                tbxOutput.Text = myparser.Output;
            }
            else
            {
                MessageBox.Show("입력 수식이 없습니다");
            }
        }
    }
}

----------------------------------------------------------------------------------------------

using System;
using System.Text;
using System.IO;
using System.Media;
using System.Windows.Forms;

namespace Cradle
{

    class Parser
    {
        private StringBuilder outBuffer;
        private StringReader InBuffer;
        private char look;

        public char Look
        {
            get { return look; }
            set { look = value; }
        }

        public string Output
        {
            get { return outBuffer.ToString(); }
            set { ; }
        }

        // constructor
        public Parser(string msg)
        {
            Console.WriteLine(msg);
            outBuffer = new StringBuilder();
            InBuffer = new StringReader(msg);
            GetChar();
        }

        // method
        protected void GetChar()
        {
            int b;
            b = InBuffer.Read();
            Look = (char)b;
        }

        protected void Error(string msg)
        {
            SystemSounds.Beep.Play();
            MessageBox.Show(msg);
        }

        protected void Abort(string msg)
        {
            Error(msg);
            throw new ArgumentException();
        }

        protected void Expected(string msg)
        {
            Abort(msg + " Expected");
        }

        protected void SkipWhite()
        {
            while (Look == '\t' || Look == ' ')
                GetChar();
        }

        protected string GetNum()
        {
            string value = "";
            if (Char.IsNumber(Look) == false)
                Expected("Integer");
            while (Char.IsNumber(Look))
            {
                value += Look;
                GetChar();
            }
            SkipWhite();
            return value;
        }

        protected string GetName()
        {
            string token = "";
            if (Char.IsLetter(Look) == false)
                Expected("Name");
            while (Char.IsLetter(Look) || Char.IsNumber(Look))
            {
                token += Look;
                GetChar();
            }
            SkipWhite();
            return token;
        }

        protected void Emit(string msg)
        {
            outBuffer.Append(msg);
        }

        protected void EmitLn(string msg)
        {
            outBuffer.AppendLine(msg);
        }

        protected void Match(char ch)
        {
            if (Look == ch)
            {
                GetChar();
                SkipWhite();
            }
            else
            {
                Expected("\'" + ch + "\'");
            }
        }

        protected void Ident()
        {
            string name;
            name = GetName();
            if (Look == '(')
            {
                Match('(');
                Match(')');
                EmitLn("BSR " + name);
            }
            else
            {
                EmitLn("MOVE " + name + "(PC),D0");
            }
        }

        protected void Multiply()
        {
            Match('*');
            Factor();
            EmitLn("MULS (SP)+,D0");
        }

        protected void Divide()
        {
            Match('/');
            Factor();
            EmitLn("MOVE (SP)+,D1");
            EmitLn("DIVS D0,D1");
            EmitLn("MOVE D1,D0");
        }

        protected void Add()
        {
            Match('+');
            Term();
            EmitLn("ADD (SP)+,D0");
        }

        protected void Subtract()
        {
            Match('-');
            Term();
            EmitLn("SUB (SP)+,D0");
            EmitLn("NEG D0");
        }

        protected void Factor()
        {
            if (Look == '(')
            {
                Match('(');
                Expression();
                Match(')');
            }
            else if (Char.IsLetter(Look))
            {
                Ident();
            }
            else
            {
                EmitLn("MOVE #" + GetNum() + ",D0");
            }
        }

        protected void Term()
        {
            Factor();
            while (Look == '*' || Look == '/')
            {
                EmitLn("MOVE D0,-(SP)");
                switch (Look)
                {
                    case '*':
                        Multiply();
                        break;
                    case '/':
                        Divide();
                        break;
                    default:
                        Expected("Mulop");
                        break;
                }
            }
        }

        protected void Expression()
        {
            if (Look == '+' || Look == '-')
                EmitLn("CLR D0");
            else
                Term();
            while (Look == '+' || Look == '-')
            {
                EmitLn("MOVE D0,-(SP)");
                switch (Look)
                {
                    case '+':
                        Add();
                        break;
                    case '-':
                        Subtract();
                        break;
                    default:
                        Expected("Addop");
                        break;
                }
            }
        }

        public void Assignment()
        {
            string name;
            name = GetName();
            Match('=');
            Expression();
            EmitLn("LEA " + name + "(PC),A0");
            EmitLn("MOVE D0,(A0)");
        }
    }

}


2019년 2월 현재 우분투의 최신 버젼은 18.10 cosmic 이죠

이 버젼에서 기본 한글 입력기는 ibus 입니다. 우분투의 기본 한글 입력기로서 꽤나 오랫동안

채택하고 있는 sw이고 안정성이나, 사용성에서 별로 문제가 없습니다만


크롬(chrome) 브라우저에서 페이스북(facebook.com) 사이트를 사용하면,

한글이 깨집니다. 요즘에 사용빈도가 높아지는 페이스북 메신저인

messenger.com 을 이용할 때에도 한글이 여지없이 깨져 버립니다


해결을 위해, 인터넷을 뒤져서 여러가지를 해보고 알아낸 내용을

아래에 같이 정리 & 공유합니다


1) 우분투 18.10 기본 한글 입력기 ibus를 사용할 때 :

        * 크롬에서 페이스북 사용시, 한글 입력이 깨집니다.

* 파이어폭스에서 페이스북 사용하면, 한글 입력이 문제없습니다

* telegram messenger 우분투 버젼에서 한글 입력이 안됩니다

* uPAD라는 오픈 소스 기반 evernote 대체 앱에서 한글 입력 안됩니다


2) fcitx 입력기를 우분투 18.10 입력기로 사용할 때 :

* fcitx 입력기를 한글 입력 목적으로 이용할 때에는

  꼭 (sudo apt install fcitx-hangul)와 같이 해야 합니다

  그냥 (sudo apt install fcitx)로 하면 한글 모드가 빠진채로 설치됩니다

* 우분투용 telegram messenger 에서 한글 입력이 됩니다

* uPAD에서는 한글 입력이 안됩니다

* 페이스북 메신저에서 한글 입력이 깨집니다

* 이클립스, 인텔리제이에서 한글 입력이 됩니다

* Komodo Edit 에서 한글 입력이 깨집니다


3) ibus, fcitx 를 이용해서는 해결이 안되서 uim 으로 테스트 :

* 설치하는 방법은, 우분투 터미널에서

   sudo apt-get install uim 이렇게 한줄만 하면 됩니다.

   그러면, 나머지 필요한 패키지들,

   uim-xim, uim-qt5, uim-gtk3, libuim8등을 같이 설치해 줍니다


* 그런 다음 우분투 설정으로 가서

(1) 기존 ibus 또는 fcitx를 제거한다

(2) 입력기를 uim으로 바꿔준다

(3) 여기서 시스템을 한번 리부트 해준다

(4) 리부트 후에, 우분투 전체앱 선택화면에서 "입력기"를 구동해서 설정을 맞춘다


이렇게 하면,

크롬 & 페북에서 한글이 깨지지 않습니다


마지막 부분 uim 세부 설정에 관해서는 자세한 외부 글이 있어서 링크를 답니다



여러가지 방법이 있을 수 있지만,


~/Desktop_launchers 폴더를 만들고

여기에 shortcut 만들고자 하는 원래 파일 이름과 같은 .desktop 파일을 만든다


예를들어 opera browser를 .deb 파일을 다운로드 받아서 설치했다고 하면

/usr/bin/opera 파일만 생긴다

그놈(gnome)은 뭐가 설치되었는지 알 수 없고, 소프트웨어 관리자에도 표시되지 않는다


윈도우즈와는 다른 이러한 비일관성(?)이 어쩌면 리눅스계열 오에스의 재미가 아닐까하는

생각도 든다


[Desktop Entry]

Name=Opera

Comment=

Exec=/usr/bin/opera

Icon=

Terminal=false

Type=Application

StartupNotify=true


이렇게 ~/Desktop_launchers/opera.desktop 파일은 만들어 준다

다음으로,
ln -s ~/Desktop_launchers/opera.desktop ~/Desktop/opera.desktop
해서 우분투가 찾을 수 있는 최종 파일을 만들어 준다

여기까지 해도 기본 데스크톱에는 아무것도 나오지 않는다
이제 도크 맨 아래에 있는 모든 애플리케이션 보기 아이콘을 누르면
목록 중에 오페라가 보인다.

여기까지 했는데도 바로 위의 목록에서 원하는 애플리케이션의 아이콘이 안보이는 경우가
있는데 이럴 때에는 아래와 같이 한 줄 더 해주자

sudo ln -s ~/Desktop_launchers/opera.desktop /usr/share/applications/opera.desktop



Hallelujah

Life is elsewhere 2014. 3. 10. 18:50

지난 번 하우스 끝날 때,

나오던 그 노래.

가사를 찾았다.

좋네...

I've heard there was a secret chord
that David played, and it pleased the Lord,
But you don't really care for music, do you? 
It goes like this: 
The fourth, the fifth, 
The minor fall, the major lift, 
The baffled king composing Hallelujah.

Hallelujah, Hallelujah. 
Hallelujah, Hallelujah.

Your faith was strong but you needed proof. 
You saw her bathing on the roof. 
Her beauty and the moonlight overthrew you.
She tied you 
To a kitchen chair, 
She broke your throne, and she cut your hair, 
And from your lips she drew the Hallelujah. 

Hallelujah, Hallelujah. 
Hallelujah, Hallelujah. 

Maybe I have been here before.
I know this room, I've walked this floor.
I used to live alone before I knew you.
I've seen your flag on the marble arch.
Love is not a victory march,
It's a cold and it's a broken Hallelujah. 

Hallelujah, Hallelujah. 
Hallelujah, Hallelujah. 

There was a time
You let me know
What's real and going on below,
But now you never show it to me, do you?
And remember when I moved in you?
The holy dark was moving too
And every breath we drew was Hallelujah. 

Hallelujah, Hallelujah. 
Hallelujah, Hallelujah. 

Maybe there's a god above,
And all I ever learned from love
Was how to shoot at someone who outdrew you,
And it's not a cry you can hear at night,
It's not somebody who's seen the light,
It's cold and it's a broken Hallelujah

Hallelujah, Hallelujah. 
Hallelujah, Hallelujah.
Hallelujah, Hallelujah. 
Hallelujah, Hallelujah.



유튜브에서 우연히 보고서...

 

우와~ 하다가, 아마도 완전히 짜고치는 걸꺼야 생각하다가

 

좀 더 찾아 보니 그렇지 만도 않더군요.

 

꼴롬비아에서 쏘시알도 이런 스타일로 추는 듯!

 

마침 이번 여름에 하는 ALCF에서 초청했군요. 해당 댄서를

 

한번 기대해 보려 합니다

 

첫번째 동영상은 이 팀의 공연 모습

 

 

 

 

 

두번째 동영상은 꼴롬비아 스타일 쏘시알 모습

 


오늘 아침에 운동 다녀 오다가,

 

동네에 있는 인테리어 가게 쇼 윈도우에

견본으로 전시해둔 장식장, 책장을 무심히 보다가...

 

어! 하면서 낯익은 패턴에 깜짝 놀라 자세히 보니

이랬다!

 

아래 사진을 보자.

 

 차례로 설명을 하면,

 우선 이 가게가 있는 거리 주변 풍경이다

 

 

 자. 이게 문제의 가게 모습. 왼쪽에 흰 책꽂이가 있는 것에 주목!

 

 

 

 

 가까이 가서 우선 가운데 있는 책꽂이를 보았다.

Space, Modern Interiors 흠... 분위기에 맞는 책 제목이 아닌가?

 

 

 

 

 이제 왼쪽에 있는 책꽂이를 보았다.

 

아니 Unix Network Programming. 이 책은 Stevens 가 지은 아주 유명한 책이다

그 옆으로 Visual C++ 책도 보인다!

 

아! 이 집 주인은 어떤 사람일까?



처음 소개하는 집은,

지하철 남포동 역에서 내려 광복동 거리 초입

(그러니까 동주여상, 미화당 백화점 가는 길)

주차장 골목 우회전 해서 작은 간판이 있는데,

 

제목이 "바우네집"

담근 술을 파는 집입니다.

국화주, 두충주, 솔방울주등...

제가 20년 전부터 다니던 집입니다.

 

 두부김치를 시키면, 그야말로 두부와 김치를 준다. 볶은 김치가 아닌.

 

 

 국화주의 모습입니다. 예전에 비해 술맛이 달아져서. ㅜ.ㅜ 슬픔

 

 

 가게는 허름합니다

 

 

다음은 고관입구, 동구청 근처에 있는 돼지갈비집

서울 마포갈비에 비해, 양념이 엷고, 부드러운 맛

 

 

 시락국과 밥의 모습입니다.

옆자리에 머리 허연 할배와 그 아들인 듯한 분들이 와서 드셨는데

아버지 생각이 나서 잠시 숙연 ㅜ.ㅜ

 

 

 내 고향 해운대에 있는 해운대온천센터

요즘은 여기가 제일 좋습니다. 해운대구청 바로 맞은편

 

 해운대에서 목욕을 하고나면

해운대 시장에 가서 콩국을 먹어야 합니다. 콩국수 아닌 콩국!

 

 밤에 부평동 갔더니(부산 영화제 하는 그 골목)

튀김과 꼬마 김밥의 모양입니다. 뭐 별로 맛있어 보이지 않아서

전 오뎅만 먹고 왔지만.



슈팅게임, 스페이스 레인져-지구정벌편




등록일:2005.12.05




 



 
전작인 스페이스 레인저, 지구군에 맞서 싸우는 내용의 다소 황당한 스토리의 횡 스크롤형 슈팅게임이었다.


흔히 스페이스 레인져라는 제목에서 상상되는건 외계인의 침략에 맞서는 우주 특공대 정도겠지만, 한원 모바일의 2연작 슈팅게임 스페이스 레인저 시리즈는 그 발상을 역으로 뒤집어놓은 게임이다.



즉 주인공들은 지구연합의 침략에 맞서는 외계혹성의 특수부대로 이게임에서의 지구인들은 승리를 위해 수단과 방법을 가리지않는 냉혹 비정한 모습을 보여준다.

2편인 지구침공편 역시 대규모 침략작전을 준비다하가 주인공 측의 반격을 받자 주저없이 대형 파괴병기를 사용하는등, 말 그대로 하는 짓이 악당 그자체인것이 다소 쇼크였다.



물론 슈팅이나 액션 게임에서 지구측이 적으로 나오는것은 이번이 처음은 아니지만, 대개 같은 지구인들끼리의 싸움이었지 완전히 외계인의 입장에서 지구연합과 싸우는 전개는 굉장히 파격적인 것이다.

(시뮬레이션 파트에서야 당연히 세력을 선택해서 싸울수 있으니 이런 전개도 당연한 것이지만...)

아무튼 그런 설정이 마음에 들어 버린 관계로, 갑작스럽지만 이번의 리뷰작은 한원 모바일의 '스페이스 레인저 : 지구 침공편' 이 되겠습니다~









전작에 이어 네이팜맨이 주인공으로 등장하는 속편, 그래픽 수준은 그다지 나아진건 없지만...


게임의 프롤로그 에서는 지구군의 재 침공 준비에 대한 반격에 나서는 이야기가 흐른다.



스테이지 개시 화면은 전작과 꽤 비슷한 디자인으로 되어 있다.






이번작의 가장 큰 특징인 종스크롤 스테이지의 도입, 시스템은 평범하지만...


횡스크롤 스테이지에 비해 종스크롤은 총알 피하기가 쉬워서 난이도적으론 좀더 쉽다.



여로모로 어려운 횡스크롤 스테이지, 특히나 보스들 상대하기가 여간 까다로운게 아니다.







 스토리&게임내용

STAR3 기지건설에 실패한 지구연합이 제 2차 침공을 준비하고 있다는 소식을 접하게 된 장로는 햄머맨과 네이팜맨을 지구정벌대로 파견하게 된다.

때는 31세기, 스타파이터를 타고 지구에 도착한 이들과 달리, 지난 200년간 지구 기지화에만 몰두하느라 지구인들은 1차 침공시 무기를 그대로 사용하고 있었다.

결국 지구연합 함대 사령관인 그레고리 2세는 최후의 수단으로 가공에너지를 가진 광자 폭탄을 터뜨리게 된다.



섬광이 가시고 난 후 스타파이터에 타고 있는 네이팜맨의 눈앞에 펼쳐진 것은, 여지껏 그들이 알고 있던 붉은별 지구가 아닌 푸른별 지구였다.

폭탄이 터짐과 동시에 순간적으로 블랙홀이 열렸고 이를 통해 스타파이터는 21세기의 지구로 시간이동을 해온 것이다.

하지만 이를 미처 알아채지 못한 네이팜맨은 과거의 지구인들과 다소 황당한 전투를 벌이게 된다.



 게임메뉴

1.메인메뉴


1. 게임시작 : 게임을 신규로 스타트한다
2. 이어서하기 : 게임오버된 스테이지에서 컨티뉴
3. 게임설명 : 조작방법, 아이템, 게임줄거리 설명
4. 환경설정 : 자동발사, 자동이동, 속도조절등의 설정
5. 점수보기 : 플레이 성적을 본다
6. 게임문의 : 제작사정보
7. 게임종료 : 게임을 끝낸다

2 . 게임내 메뉴(취소, clr키)



1. 계속하기 : 게임으로 복귀

2. 게임방법 : 조작방법, 아이템, 게임설명등

3. 환경설정 : 메인메뉴와 동일

4. 메인메뉴 : 메인메뉴로 나간다

5. 게임종료 : 게임을 끝낸다

* 메뉴 하단에 현재의 시간이 표시된다(시계대용?)

 게임화면 설명


* 게임에서는 종, 횡 스테이지가 번갈아서 나온다

횡스크롤 스테이지는 전투기를 타고 플레이하게 되는데, 종 스크롤과는 달리 강화무기를 획득했을때의 제한 시간 게이지가 우측 부분에 따로 표시된다는 점이 편리하다.

별다르게 특기할만한 부분은 없지만, 우측 상단의 스테이지 진행률을 나타나는 게이지에서 녹색칸이 현재의 위치, 빨간칸이 보스가 있는 곳이다.


이쪽은 파일럿인 네이팜맨이 직접 싸우는 횡 스크롤 스테이지, 강화무기의 효과도 전혀 틀리다.

여기서는 강화무기 유지 한계시간이 표시되지 않는 대신, 상단의 슬롯에 현재 스톡되어 있는 강화무기의 종류를 알수있게 되어 있다.

그외의 부분은 종스크롤 스테이지와 보는 방법은 동일

강화무기는 2가지로, 스타파이터 모드, 네이팜맨 모드의 강화무기가 제각각 틀리니 총 4가지의 강화무기가 있는 셈이다.

하지만 모두다 지속시간이 엄청나게 짧아서 효율적으로 활용하기가 힘들다.

*키로 일반 샷으로 바꾸는 것으로 강화무기를 사용하지 않고 스톡(모아두기) 하는게 가능, 단 중복으로 얻는다고 해서 지속 시간이 늘어나거나 하는게 아니므로 주의

이렇게 일렬로 늘어서서 오는 적은 모두 격파하면 강화무기나 폭탄등의 아이템을 주니, 출현하면 무슨 수를 써서든지 모두 격파하자

폭탄은 일정 범위에만 작용하며 그안의 조무래기들은 일격에 격파, 탄을 모두 없애주지만, 보스의 필살기급 공격은 없애지 못한다는 점을 명심할것, 일례로 사진의 2스테이지 보스가 쏘는 거대 레이저 같은 공격은 폭탄으로 없앨수 없다

보스가 출현하면 아래의 스테이지 진행률 게이지가 보스의 체력 게이지로 바뀐다.

보스는 일반 조무라기 들과 비교할수도 없을 정도로 강하니, 약간 장기전은 각오해 두는것이 좋을것이다.







조작키 키설명
△ ▽ ◁ ▷,
2,4,6,8
이동
멀티팩,5 선택, 발사
취소 취소,게임내 메뉴 호출
* 무기 선택
9 폭탄






네이팜맨

이게임의 주인공, 전작에서 지구군의 침공을 막아낸 영웅이기도 하며, 지구 공략전에 참가했다가 지구군이 발사한 폭탄의 폭팔에 휘말려 과거의 지구로 타임슬립, 영문도 모른채 지구 침공 작전을 개시하게 된다.


 아이템 설명


방패 공격을 2회 방어해준다

HP 내구력을 1칸 회복

강화무기1 네이팜맨 - 직선형 3발, 스타파이터 - 직선형 4발

강화무기2 네이팜맨 - 관통레이저, 스타파이터 - 관통미사일

폭탄 폭탄 1개를 늘려줌





1. 강화무기는 보스전용을 하나쯤 아껴두자

단시간 동안 강력한 공격을 할수있는 강화무기는 스테이지 공략시에는 그다지 맞질 않는 무기다.

대신 보스에게는 단시간동안 HP를 많이 깎을수 있는 유효한 공격수단이니 만큼, 관통 레이저 같은 강화무기는 쓰지않고 얻으면 즉시 *키로 다른 무기로 바꿔주는 식으로 모아두는게 좋다.

특히나 보스가 무서운 게임이니 만큼 전투 초반에 체력을 대폭 깎아놓으면 그만큼 빨리 격파할수 있으므로 이후의 공략이 손쉬워 진다.



2. 컨티뉴 시스템의 구조를 이해하자

우선 플레이시는 이어서 하기(컨티뉴)가 2회로 제한된다.

일견 너무 까다로운 제한이 아닌가 싶지만, 실제 2회 플레이후 게임 오버를 당하더라도 이어서 하기를 선택하면 다시 그 스테이지를 2회 컨티뉴 제한으로 해서 플레이가 가능하게 되므로 어떻게든 그 스테이지만 클리어하면 다시 다음 스테이지에서 컨티뉴 횟수가 2회로 유지된채 이어하기로 플레이가 가능하므로, 게임의 엔딩을 보는것도 어렵지 않다.







1. 난이도 : ★★★★☆


꽤 어려운 편이다.

우선 일반샷의 파워가 낮은데다 파워업 시스템도 없고, 강화무기도 지속시간이 너무나 짧아, 보스공략시 이외에는 그다지 도움이 되지 않는다.

설상가상으로 적들의 공격이 상당히 거세서, 어느정도 게임 스피드를 낮추어 놓고 플레이할 필요성 마저 있다.

덤으로 폭탄이 보스의 필살기를 없애지 못한다는 점도 난이도 상승 요인중 하나다.



2. 시나리오/스토리 : ★★★★☆

시나리오나 스토리는 꽤 참신한 편이다.

특히나 지구군을 악역으로 돌려버린 전작에 이어, 침공의 원인이 사실은 이쪽에 있었을지도 모른다는 뉘앙스를 풍기는 후속작의 스토리는 꽤나 흥미를 유발한다.

하지만 슈팅 게임이니 만큼 그이상의 무언가를 보여주길 바라는건 무리일지도 모르겠다.



3. 그래픽 : ★★★

그래픽은 보통에서 약간 낮은 수준, 디자인도 특별날것이 없어서 시각적으로 그다지 자극이 없는 게임이며, 이것이 이 소프트가 외면을 받는 이유중 하나라고 생각된다.

특히나 네이팜맨의 생김새가 여로모로 촌스러워서 감정이입하기가 쉽지않다.



4. 사운드 : ★★☆☆☆

들려주는 쪽으로도 그다지 좋은 점을 찾기 힘들다.

효과음이나 배경음 공통적으로 이미지가 희박해서 인상에 남는 부분이 전혀 없었다.



5. 폐인(?)중독성 : ★★☆☆☆

스토리쪽은 꽤 마음에 들었고 실제 플레이 해보면 의외로 재미있지만, 역시 그래픽이나 사운드가 떨어지는 부분이 많아서 한두번 플레이 해보면 금새 흥미를 잃게 되는 게임이다.

그점에 있어서 중독성은 상당히 낮은 게임

마무리

스페이스 레인저 : 지구침공편은 기획면에서는 상당히 재미있는 면이 많은 소프트였지만, 실제 그래픽과 사운드가 너무 떨어져서 게임의 재미마저 떨어뜨린 케이스이다.

제아무리 게임성 지상주의인 필자라고 해도, 시각적, 청각적인 자극이 이렇게가 희박한 게임을 계속 플레이할 의욕을 자신에게 불러 일으키는건 상당히 힘든 일이다.



하지만 종,횡 스크롤이 반복적으로 나오는 게임 구성이나, 빠른속도의 스크롤, 다양한적과 강력한 공격패턴을 가진 보스등, 슈팅게임으로서의 기본적인 요소를 따져보면 한윈 모바일의 슈팅게임 제작능력은 그리 낮은 편이 아니다.

여기서 좀더 시각적, 청각적인 요소를 강화하고, 좀더 특이한 소재를 잡아서 새로운 작품을 만든다면 슈팅게임 전문 메이커로서 이후의 발전을 기대해볼수 있을지도 모르겠다.

아무튼 이후 작품에서 한윈모바일의 건투를 빈다.



기타 스크린샷
















 

 게임명 스페이스 레인져 - 지구정벌편 
 개발사 한원모바일
 서비스타입 다운로드형  다운가격 2,000원 2,000원
 용량 396 KByte 241 KByte
 멀티팩 접속 > 자료실 > 게임 > 슈팅/액션/아케이드 > 아케이드 > 지구침공편
 ez-i > 2.게임 > 9.액션/슈팅/어드벤쳐 > 2.슈팅 게임 > 스페이스레인져-지구정벌편

ⓒ 뭉클(www.muncle.com). 무단전재 및 재배포 금지

<이 기사의 내용과 주장은 뭉클의 콘텐츠이며 스팟뉴스의 편집방향과 다를 수 있습니다.



A Matter of Style
When declaring pointer and reference variables, some C++ programmers use a unique
coding style that associates the * or the & with the type name and not the variable. For
example, here are two functionally equivalent declarations:

int& p; // & associated with type
int &p; // & associated with variable

Associating the * or & with the type name reflects the desire of some programmers
for C++ to contain a separate pointer type. However, the trouble with associating the &
or * with the type name rather than the variable is that, according to the formal C++
syntax, neither the & nor the * is distributive over a list of variables. Thus, misleading
declarations are easily created. For example, the following declaration creates one, not
two, integer pointers.

int* a, b;

Here, b is declared as an integer (not an integer pointer) because, as specified by the
C++ syntax, when used in a declaration, the * (or &) is linked to the individual variable
that it precedes, not to the type that it follows. The trouble with this declaration is that
the visual message suggests that both a and b are pointer types, even though, in fact,
only a is a pointer. This visual confusion not only misleads novice C++ programmers,
but occasionally old pros, too.

It is important to understand that, as far as the C++ compiler is concerned, it
doesn’t matter whether you write int *p or int* p. Thus, if you prefer to associate the *
or & with the type rather than the variable, feel free to do so.