自機に弾を撃たせたいです。
Posted: 2015年8月09日(日) 01:35
初めまして、崎島といいます。
今回、自分の趣味ということで、初めてのゲームを作りたいなと思い、東方二次創作でのゲームを作っています。物語等は考え済みです。
事前に、c言語の入門書は読み、DXライブラリの使い方も、見ながらではありますが何とかできます。
本題ですが、今、http://akaguro.jp/stg/stg_index.shtmlを参 ... て消してしまいました。
とりあえず、書いたコードはそのまま載せます。
code
#include "DxLib.h"
//プロトタイプ宣言//
void init_back_img(void);
void to_center(void);
void draw_back(void);
void draw_variable(void);
int get_key(void);
void init_player(void);
void move_player(void);
void draw_player(void);
struct PLAYER{
double x, y;
double draw_x, draw_y;
};
struct PLAYER p1;
int key[256];
int counter;
double back_img_y;
int back_img1;
int back_img2;
int gamecount;
int Color_White;
//こっから本文//
int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int){
ChangeWindowMode(TRUE);
DxLib_Init();
SetDrawScreen(DX_SCREEN_BACK);
init_player();
init_back_img();
while (ScreenFlip() == 0 && ProcessMessage() == 0
&& ClearDrawScreen() == 0 && get_key() == 0){
/*ここにプログラムを書く。主に関数呼び出し*/
to_center();
draw_back();
draw_player();
draw_variable();
move_player();
gamecount++;
back_img_y++;
}
DxLib_End();
return 0;
}
//以下、関数//
void init_back_img(){
back_img1 = LoadGraph("test.png");
back_img2 = LoadGraph("test.png");
back_img_y = 0;
Color_White = GetColor(255, 255, 255);
}
void init_player(){
p1.x = 0;
p1.y = -200;
p1.draw_x = 0;
p1.draw_y = 0;
}
void move_player(){
if (key[KEY_INPUT_RIGHT] >= 1){
p1.x = p1.x + 3;
if (p1.x < 0 && key[KEY_INPUT_A]) p1.x = 0;//瞬間移動っぽいもの
if (p1.x > 305)p1.x = 305;
}
if (key[KEY_INPUT_DOWN] >= 1){
p1.y = p1.y - 3;
if (p1.y < -220)p1.y = -220;
}
if (key[KEY_INPUT_LEFT] >= 1){
p1.x = p1.x - 3;
if (p1.x > 0 && key[KEY_INPUT_A])p1.x = 0;//瞬間移動っぽいもの
if (p1.x < -330)p1.x = -330;
}
if (key[KEY_INPUT_UP] >= 1){
p1.y = p1.y + 3;
if (p1.y > 240)p1.y = 240;
}
}
void draw_player(){
int Handle1;
int Handle2;
int Handle3;
Handle1 = LoadGraph("player_reimu1.png");
Handle2 = LoadGraph("player_reimu2.png");
Handle3 = LoadGraph("player_reimu3.png");
if (CheckHitKey(KEY_INPUT_LEFT) == 0 && CheckHitKey(KEY_INPUT_RIGHT) == 0)
{
// 右と左が押されていない(通常グラ表示)//
DrawGraph(p1.draw_x, p1.draw_y, Handle1, TRUE);
}
else if (CheckHitKey(KEY_INPUT_LEFT) == 1 && CheckHitKey(KEY_INPUT_RIGHT) == 1){
// 右と左が押されている(通常グラ表示)//
DrawGraph(p1.draw_x, p1.draw_y, Handle1, TRUE);
}
else{
// 右か左が押されている(通常グラ非表示)//
}
if (key[KEY_INPUT_RIGHT] >= 1 && key[KEY_INPUT_LEFT] == 0){
DrawGraph(p1.draw_x, p1.draw_y, Handle2, TRUE);
}//左靡きグラ表示//
if (key[KEY_INPUT_LEFT] >= 1 && key[KEY_INPUT_RIGHT] == 0){
DrawGraph(p1.draw_x, p1.draw_y, Handle3, TRUE);
}//右靡きグラ表示//
}
void to_center(){
p1.draw_x = p1.x + 320;
p1.draw_y = ((-1)*p1.y) + 240;
}
void draw_back(){
DrawGraph(0, back_img_y, back_img1, TRUE);
DrawGraph(0, back_img_y - 480, back_img2, TRUE);
DrawLine(0, 240, 640, 240, Color_White);
DrawLine(320, 0, 320, 480, Color_White);
DrawFormatString(320, 240, Color_White, "(0,0)");
if (back_img_y > 480){
back_img_y = 0;
}
}
void draw_variable(){
DrawFormatString(440, 440, Color_White, "gamecount=%d", gamecount);
}
int get_key(){
char keys[256];
GetHitKeyStateAll(keys);
for (int i = 0; i < 256; i++){
if (keys != 0){
key++;
}
else{
key = 0;
}
}
return 0;
}
/code
使用している環境は、
os:windows 8.1
コンパイラ名:Visual Studio 2013
今回、自分の趣味ということで、初めてのゲームを作りたいなと思い、東方二次創作でのゲームを作っています。物語等は考え済みです。
事前に、c言語の入門書は読み、DXライブラリの使い方も、見ながらではありますが何とかできます。
本題ですが、今、http://akaguro.jp/stg/stg_index.shtmlを参 ... て消してしまいました。
とりあえず、書いたコードはそのまま載せます。
code
#include "DxLib.h"
//プロトタイプ宣言//
void init_back_img(void);
void to_center(void);
void draw_back(void);
void draw_variable(void);
int get_key(void);
void init_player(void);
void move_player(void);
void draw_player(void);
struct PLAYER{
double x, y;
double draw_x, draw_y;
};
struct PLAYER p1;
int key[256];
int counter;
double back_img_y;
int back_img1;
int back_img2;
int gamecount;
int Color_White;
//こっから本文//
int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int){
ChangeWindowMode(TRUE);
DxLib_Init();
SetDrawScreen(DX_SCREEN_BACK);
init_player();
init_back_img();
while (ScreenFlip() == 0 && ProcessMessage() == 0
&& ClearDrawScreen() == 0 && get_key() == 0){
/*ここにプログラムを書く。主に関数呼び出し*/
to_center();
draw_back();
draw_player();
draw_variable();
move_player();
gamecount++;
back_img_y++;
}
DxLib_End();
return 0;
}
//以下、関数//
void init_back_img(){
back_img1 = LoadGraph("test.png");
back_img2 = LoadGraph("test.png");
back_img_y = 0;
Color_White = GetColor(255, 255, 255);
}
void init_player(){
p1.x = 0;
p1.y = -200;
p1.draw_x = 0;
p1.draw_y = 0;
}
void move_player(){
if (key[KEY_INPUT_RIGHT] >= 1){
p1.x = p1.x + 3;
if (p1.x < 0 && key[KEY_INPUT_A]) p1.x = 0;//瞬間移動っぽいもの
if (p1.x > 305)p1.x = 305;
}
if (key[KEY_INPUT_DOWN] >= 1){
p1.y = p1.y - 3;
if (p1.y < -220)p1.y = -220;
}
if (key[KEY_INPUT_LEFT] >= 1){
p1.x = p1.x - 3;
if (p1.x > 0 && key[KEY_INPUT_A])p1.x = 0;//瞬間移動っぽいもの
if (p1.x < -330)p1.x = -330;
}
if (key[KEY_INPUT_UP] >= 1){
p1.y = p1.y + 3;
if (p1.y > 240)p1.y = 240;
}
}
void draw_player(){
int Handle1;
int Handle2;
int Handle3;
Handle1 = LoadGraph("player_reimu1.png");
Handle2 = LoadGraph("player_reimu2.png");
Handle3 = LoadGraph("player_reimu3.png");
if (CheckHitKey(KEY_INPUT_LEFT) == 0 && CheckHitKey(KEY_INPUT_RIGHT) == 0)
{
// 右と左が押されていない(通常グラ表示)//
DrawGraph(p1.draw_x, p1.draw_y, Handle1, TRUE);
}
else if (CheckHitKey(KEY_INPUT_LEFT) == 1 && CheckHitKey(KEY_INPUT_RIGHT) == 1){
// 右と左が押されている(通常グラ表示)//
DrawGraph(p1.draw_x, p1.draw_y, Handle1, TRUE);
}
else{
// 右か左が押されている(通常グラ非表示)//
}
if (key[KEY_INPUT_RIGHT] >= 1 && key[KEY_INPUT_LEFT] == 0){
DrawGraph(p1.draw_x, p1.draw_y, Handle2, TRUE);
}//左靡きグラ表示//
if (key[KEY_INPUT_LEFT] >= 1 && key[KEY_INPUT_RIGHT] == 0){
DrawGraph(p1.draw_x, p1.draw_y, Handle3, TRUE);
}//右靡きグラ表示//
}
void to_center(){
p1.draw_x = p1.x + 320;
p1.draw_y = ((-1)*p1.y) + 240;
}
void draw_back(){
DrawGraph(0, back_img_y, back_img1, TRUE);
DrawGraph(0, back_img_y - 480, back_img2, TRUE);
DrawLine(0, 240, 640, 240, Color_White);
DrawLine(320, 0, 320, 480, Color_White);
DrawFormatString(320, 240, Color_White, "(0,0)");
if (back_img_y > 480){
back_img_y = 0;
}
}
void draw_variable(){
DrawFormatString(440, 440, Color_White, "gamecount=%d", gamecount);
}
int get_key(){
char keys[256];
GetHitKeyStateAll(keys);
for (int i = 0; i < 256; i++){
if (keys != 0){
key++;
}
else{
key = 0;
}
}
return 0;
}
/code
使用している環境は、
os:windows 8.1
コンパイラ名:Visual Studio 2013