- 作者: 石田晴久,高田大二,後藤良和,中島寛和
- 出版社/メーカー: 実教出版
- 発売日: 2005/10
- メディア: 単行本
- クリック: 1回
- この商品を含むブログを見る
その感覚で毎日プログラムを書いたら儲かるんじゃないの?と。
ためしに初めて作ったゲームプログラムをブログにアップします。
2009年の正月にセガ本を読んで宿題となっていた倉庫番です。
// souko.cpp : コンソール アプリケーション用のエントリ ポイントの定義
//#include "stdafx.h"
#include
#includechar* sline1="#######";
char* sline2="# ..p #";
char* sline3="# oo #";
char* sline4="# #";
char* sline5="#######";char line1[7];
char line2[7];
char line3[7];
char line4[7];
char line5[7];void move(int move_x, int move_y);
void getpos(int* px, int* py);
char getitem(int x, int y);
void setitem(int x, int y, char c);
char getitem(int x, int y)
{
switch(y) {
case 0: return line1[x];
case 1: return line2[x];
case 2: return line3[x];
case 3: return line4[x];
case 4: return line5[x];
}
return 0;
}void setitem(int x, int y, char c)
{
switch(y) {
case 0: line1[x] = c; break;
case 1: line2[x] = c; break;
case 2: line3[x] = c; break;
case 3: line4[x] = c; break;
case 4: line5[x] = c; break;
}
}void getpos(int* px, int* py)
{
for(int x=0; x<7; x++) {
for(int y=0; y<5; y++) {
if(getitem(x,y) == 'p' || getitem(x,y) == 'P') {
*px = x;
*py = y;
return;
}
}
}
}void move(int move_x, int move_y)
{
int org_x;
int org_y;
int dest_x;
int dest_y;
int nimotu_org_x;
int nimotu_org_y;
int nimotu_dest_x;
int nimotu_dest_y;
getpos(&org_x, &org_y);
dest_x = org_x + move_x;
dest_y = org_y + move_y;
if(getitem(dest_x, dest_y) == '#') {
return;
}
if(getitem(dest_x, dest_y) == 'o' || getitem(dest_x, dest_y) == 'O') {
nimotu_org_x = dest_x;
nimotu_org_y = dest_y;
nimotu_dest_x = nimotu_org_x + move_x;
nimotu_dest_y = nimotu_org_y + move_y;
if(getitem(nimotu_dest_x, nimotu_dest_y) == '#') {
return;
}
if(getitem(nimotu_dest_x, nimotu_dest_y) == 'o') {
return;
}
if(getitem(nimotu_dest_x, nimotu_dest_y) == 'O') {
return;
}
if(getitem(nimotu_org_x, nimotu_org_y) == 'o') {
setitem(nimotu_org_x, nimotu_org_y, ' ');
} else { // 'O'
setitem(nimotu_org_x, nimotu_org_y, '.');
}
if(getitem(nimotu_dest_x, nimotu_dest_y) == '.') {
setitem(nimotu_dest_x, nimotu_dest_y, 'O');
} else { // ' '
setitem(nimotu_dest_x, nimotu_dest_y, 'o');
}
}
if(getitem(org_x, org_y) == 'p') {
setitem(org_x, org_y, ' ');
} else { // 'P'
setitem(org_x, org_y, '.');
}
if(getitem(dest_x, dest_y) == ' ') {
setitem(dest_x, dest_y, 'p');
} else { // '.'
setitem(dest_x, dest_y, 'P');
}
}int main(int argc, char* argv[])
{
memcpy(line1, sline1, 7);
memcpy(line2, sline2, 7);
memcpy(line3, sline3, 7);
memcpy(line4, sline4, 7);
memcpy(line5, sline5, 7);
char c;
while(1) {
printf("%s\n", line1);
printf("%s\n", line2);
printf("%s\n", line3);
printf("%s\n", line4);
printf("%s\n", line5);
if(line2[2] == 'O' && line2[3] == 'O') {
printf("Clear!!\n");
cin >> c;
break;
}
cin >> c;
switch (c) {
case 'a': move(-1,0); break;
case 's': move(1,0); break;
case 'w': move(0,-1); break;
case 'z': move(0,1); break;
}
}
return 0;
}// 製作2時間プレイ10秒
C言語のようでC++の文法も混じっています。
これが1時間から2時間の間で書いた倉庫番のプログラムです。
宿題の制限時間が2時間だったこともあって、雑な部分もあります。
プログラムの時間はデバッグや動作確認も含めての時間です。
社会人として5年以上プログラムの仕事をしてから書いたものですが、
大学の卒論がこの倉庫番くらいの出来の情報学部のひと、結構います。
倉庫番でなくオセロを作れると優等生という感じでしょうか。
(もちろん対戦型でなくコンピュータが指すオセロの意味で)
これくらいのプログラムを毎日書けば本当に儲かるのか。
一年で365編書けることになります。
143行あるので概算すると5万行。
辻褄の合ったプログラムが5万行あるとそこそこのものになるかな。
続くかどうかが問題だし、テーマを一貫出来るかも問題。