【Androidゲーム】リオト王国物語

一週間でミニゲーム1本チャンレンジ3作目。

簡単なリアルタイムストラテジーに挑戦してみました。

王、歩兵、騎兵の3種類のユニットに剣、槍、弓、盾の4種類の武器を組み合わせて軍隊を作り自分の王を守りながら敵を全滅させる戦略ゲームです。

シンプルながら奥が深いゲームになっています。

ぜひ遊んでみてください。

play.google.com

f:id:hanulltech:20181015150123p:plain

f:id:hanulltech:20181015150133p:plain

【Androidゲーム】光と闇のシューティング

1週間でゲーム1本チャンレンジ2作目の作品です。

2画面のシューティングゲームになります。

上下で画面が2分割されている新感覚のシューティングゲームです。

上の画面ではプレイヤーが操るキャラクターが見えるけど敵が見えません。

下の画面では、敵と敵の攻撃が見えるけどプレイヤーのキャラクターが見えません。

しかし、見えないだけで上の画面と下の画面では同じことが起こっていて、プレイヤーは攻撃を受けたりすると、ダメージを喰らいます。

プレイヤーのキャラクターは上の画面でも下の画面でもタップすることで、移動することができます。

ぜひ、遊んでみてください

 

play.google.com


 

f:id:hanulltech:20181015145205p:plain

いきものずかん

Unityで1週間で1本簡単なミニゲームを作るのに挑戦しています。

最初の作品はいきものずかん。

僕のない絵心で書いた生き物たちの名前を呼んで図鑑を集める、

放置系みたいな感じのゲームになっています。

なんの生き物かわからなくても図鑑からヒントを見ることもできます。

ぜひ僕の絵心と戦ってみてください。

play.google.com


 

f:id:hanulltech:20181015144238p:plain

f:id:hanulltech:20181015144216p:plain

 

プライバシーポリシー

Hanullは、以下のとおり個人情報保護方針を定め、個人情報保護の仕組みを構築し、個人情報保護の重要性の認識と取組みを徹底することにより、個人情報の保護を推進致します。

 

個人情報の管理
Hanullは、お客さまの個人情報を正確かつ最新の状態に保ち、個人情報への不正アクセス・紛失・破損・改ざん・漏洩などを防止するため、セキュリティシステムの維持・管理体制の整備徹底等の必要な措置を講じ、安全対策を実施し個人情報の厳重な管理を行ないます。

 

個人情報の利用目的
お客さまからお預かりした個人情報は、各アプリ内でのデータ保存、ランキングのみに利用します。

 

個人情報の第三者への開示・提供の禁止
Hanullは、お客さまよりお預かりした個人情報を適切に管理し、次のいずれかに該当する場合を除き、個人情報を第三者に開示いたしません。
  • お客さまの同意がある場合
  • お客さまが希望されるサービスを行なうために当社が業務を委託する業者に対して開示する場合
  • 法令に基づき開示することが必要である場合

 

個人情報の安全対策
Hanullは、個人情報の正確性及び安全性確保のために、セキュリティに万全の対策を講じています。

 

ご本人の照会
お客さまがご本人の個人情報の照会・修正・削除などをご希望される場合には、ご本人であることを確認の上、対応させていただきます。

 

法令、規範の遵守と見直し
Hanullは、保有する個人情報に関して適用される日本の法令、その他規範を遵守するとともに、本ポリシーの内容を適宜見直し、その改善に努めます。

 

お問い合せ
Hanullの個人情報の取扱に関するお問い合せは下記までご連絡ください。
Hanull hanulltech@gmail.com

Android Camera2 で画像を表示るまでのおそらくこれが最低限のソースコード

package com.hanull.petscamera;

import android.Manifest;
import android.content.pm.PackageManager;
import android.graphics.ImageFormat;
import android.graphics.SurfaceTexture;
import android.hardware.camera2.CameraAccessException;
import android.hardware.camera2.CameraCaptureSession;
import android.hardware.camera2.CameraCharacteristics;
import android.hardware.camera2.CameraDevice;
import android.hardware.camera2.CameraManager;
import android.hardware.camera2.CaptureRequest;
import android.media.ImageReader;
import android.support.annotation.IntDef;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.Surface;
import android.view.TextureView;

import java.lang.reflect.Array;
import java.util.Arrays;

public class MainActivity extends AppCompatActivity {
private CameraDevice mCameraDevice;
private CameraCaptureSession mCameraSession;
private TextureView mTextureView;
private CaptureRequest.Builder mPreviewBuilder;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);


mTextureView = (TextureView) findViewById(R.id.camera2_texture);
if(mTextureView.isAvailable()) {
openCamera();

} else {
mTextureView.setSurfaceTextureListener(surfaceTextureListener);
}
}

private void openCamera() {
CameraManager cameraManager = (CameraManager) getSystemService(CAMERA_SERVICE);
try {
String selectedCameraId = cameraManager.getCameraIdList()[0];
if(checkSelfPermission(Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED) {
cameraManager.openCamera(selectedCameraId, stateCallback, null);
}
} catch (CameraAccessException e) {
e.printStackTrace();
}
}

CameraDevice.StateCallback stateCallback = new CameraDevice.StateCallback() {
@Override
public void onOpened(@NonNull CameraDevice cameraDevice) {
mCameraDevice = cameraDevice;
SurfaceTexture texture = mTextureView.getSurfaceTexture();
texture.setDefaultBufferSize(mTextureView.getWidth(), mTextureView.getHeight());
Surface mPreViewSurface = new Surface(texture);
try {
cameraDevice.createCaptureSession(Arrays.asList(mPreViewSurface/*, mImageReader.getSurface()*/), sessionCallback, null);
mPreviewBuilder = mCameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW);
mPreviewBuilder.addTarget(mPreViewSurface);
mPreviewBuilder.set(CaptureRequest.CONTROL_AF_MODE, CaptureRequest.CONTROL_AF_MODE_CONTINUOUS_PICTURE);
} catch (CameraAccessException e) {
e.printStackTrace();
}

}

@Override
public void onDisconnected(@NonNull CameraDevice cameraDevice) {
cameraDevice.close();
mCameraDevice = null;
}

@Override
public void onError(@NonNull CameraDevice cameraDevice, int error) {
cameraDevice.close();
mCameraDevice = null;
}
};

CameraCaptureSession.StateCallback sessionCallback = new CameraCaptureSession.StateCallback() {
@Override
public void onConfigured(@NonNull CameraCaptureSession cameraCaptureSession) {
mCameraSession = cameraCaptureSession;
try {
mCameraSession.setRepeatingRequest(mPreviewBuilder.build(), null, null);
} catch (CameraAccessException e) {
e.printStackTrace();
}
}

@Override
public void onConfigureFailed(@NonNull CameraCaptureSession cameraCaptureSession) {

}
};

TextureView.SurfaceTextureListener surfaceTextureListener = new TextureView.SurfaceTextureListener() {
@Override
public void onSurfaceTextureAvailable(SurfaceTexture surfaceTexture, int i, int i1) {
openCamera();
}

@Override
public void onSurfaceTextureSizeChanged(SurfaceTexture surfaceTexture, int i, int i1) {

}

@Override
public boolean onSurfaceTextureDestroyed(SurfaceTexture surfaceTexture) {
return false;
}

@Override
public void onSurfaceTextureUpdated(SurfaceTexture surfaceTexture) {

}
};
}