C言語でテトリスを作ろうと思ったのですが・・・
Posted: 2013年7月02日(火) 00:00
コンパイラがCygwinでテキストエディタはEmacsでテトリスのソースを頑張って書いているところなんですが
壁は
[][][][][][][][][][][][]
[] []
[] []
[] []
[] []
[] []
[] []
[] []
[] []
[] []
[] []
[] []
[] []
[] []
[] []
[] []
[] []
[] []
[] []
[] []
[] []
[][][][][][][][][][][][]
こういう風にできました
ただブロックの作成について7種類のブロックを作ってとりあえずは
表示したいのですが
7種類のうちランダムの1種類を
■
■■■
というふうに表示する作業を10回行うというつもりのソースコードなのですが
どこが間違っていますか?
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void createBlock(void){
//7種類のブロックの作成
int i,j;
char Block[j];
for(i=0;i<4;i++) {
for(j=0;j<4;j++) {
Block[j]=0;
}
}
switch(rand() % 7){
case 0:
Block[1][1]=1; Block[2][1]=1; Block[1][2]=1; Block[2][2]=1;
for(i=0;i<4;i++) {
for(j=0;j<4;j++) {
if(Block[j]){
printf("■");
}else{
printf(" ");
}
}
printf("\n");
}
return;
case 1:
Block[1][0]=1; Block[1][1]=1; Block[1][2]=1; Block[1][3]=1;
for(i=0;i<4;i++) {
for(j=0;j<4;j++) {
if(Block[j])
printf("■");
}else{
printf(" ");
}
}
printf("\n");
}
return;
case 2:
Block[1][1]=1; Block[1][2]=1; Block[2][2]=1; Block[1][3]=1;
for(i=0;i<4;i++) {
for(j=0;j<4;j++) {
if(Block[j])
printf("■");
}else{
printf(" ");
}
}
printf("\n");
}
return;
case 3:
Block[1][1]=1; Block[2][1]=1; Block[1][2]=1; Block[1][3]=1;
for(i=0;i<4;i++) {
for(j=0;j<4;j++) {
if(Block[j])
printf("■")
}else{
printf(" ");
}
}
printf("\n");
}
return;
case 4:
Block[1][1]=1; Block[2][1]=1; Block[2][2]=1; Block[2][3]=1;
for(i=0;i<4;i++) {
for(j=0;j<4;j++) {
if(Block[j])
printf("■");
}else{
printf(" ");
}
}
printf("\n");
}
return;
case 5:
Block[2][1]=1; Block[1][2]=1; Block[2][2]=1; Block[1][3]=1;
for(i=0;i<4;i++) {
for(j=0;j<4;j++) {
if(Block[j])
printf("■");;
}else{
printf(" ");
}
}
printf("\n");
}
return;
case 6:
Block[1][1]=1; Block[1][2]=1; Block[2][2]=1; Block[2][3]=1;
for(i=0;i<4;i++) {
for(j=0;j<4;j++) {
if(Block[j])
printf("■");
}else{
printf(" ");
}
}
printf("\n");
}
return;
}
}
int main(){
int i,j;
char Block[j];
srand((unsigned int)time(NULL));
for(i=0;i<10;i++){
printf("%c", createBlock());
}
return 0;
}
間違っているところがわからないので
お願いします
またブロックの部分を■と表示してブロックフィールド4×4のうちブロックでない部分は と表示するという方法にすると
■■■■
という風に横に並ぶばあいはいいのですが
■
■■
■
とたてに並ぶ場合はこのようにすかすかになってしまいます
どのようにしたらいいですか?
壁は
[][][][][][][][][][][][]
[] []
[] []
[] []
[] []
[] []
[] []
[] []
[] []
[] []
[] []
[] []
[] []
[] []
[] []
[] []
[] []
[] []
[] []
[] []
[] []
[][][][][][][][][][][][]
こういう風にできました
ただブロックの作成について7種類のブロックを作ってとりあえずは
表示したいのですが
7種類のうちランダムの1種類を
■
■■■
というふうに表示する作業を10回行うというつもりのソースコードなのですが
どこが間違っていますか?
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void createBlock(void){
//7種類のブロックの作成
int i,j;
char Block[j];
for(i=0;i<4;i++) {
for(j=0;j<4;j++) {
Block[j]=0;
}
}
switch(rand() % 7){
case 0:
Block[1][1]=1; Block[2][1]=1; Block[1][2]=1; Block[2][2]=1;
for(i=0;i<4;i++) {
for(j=0;j<4;j++) {
if(Block[j]){
printf("■");
}else{
printf(" ");
}
}
printf("\n");
}
return;
case 1:
Block[1][0]=1; Block[1][1]=1; Block[1][2]=1; Block[1][3]=1;
for(i=0;i<4;i++) {
for(j=0;j<4;j++) {
if(Block[j])
printf("■");
}else{
printf(" ");
}
}
printf("\n");
}
return;
case 2:
Block[1][1]=1; Block[1][2]=1; Block[2][2]=1; Block[1][3]=1;
for(i=0;i<4;i++) {
for(j=0;j<4;j++) {
if(Block[j])
printf("■");
}else{
printf(" ");
}
}
printf("\n");
}
return;
case 3:
Block[1][1]=1; Block[2][1]=1; Block[1][2]=1; Block[1][3]=1;
for(i=0;i<4;i++) {
for(j=0;j<4;j++) {
if(Block[j])
printf("■")
}else{
printf(" ");
}
}
printf("\n");
}
return;
case 4:
Block[1][1]=1; Block[2][1]=1; Block[2][2]=1; Block[2][3]=1;
for(i=0;i<4;i++) {
for(j=0;j<4;j++) {
if(Block[j])
printf("■");
}else{
printf(" ");
}
}
printf("\n");
}
return;
case 5:
Block[2][1]=1; Block[1][2]=1; Block[2][2]=1; Block[1][3]=1;
for(i=0;i<4;i++) {
for(j=0;j<4;j++) {
if(Block[j])
printf("■");;
}else{
printf(" ");
}
}
printf("\n");
}
return;
case 6:
Block[1][1]=1; Block[1][2]=1; Block[2][2]=1; Block[2][3]=1;
for(i=0;i<4;i++) {
for(j=0;j<4;j++) {
if(Block[j])
printf("■");
}else{
printf(" ");
}
}
printf("\n");
}
return;
}
}
int main(){
int i,j;
char Block[j];
srand((unsigned int)time(NULL));
for(i=0;i<10;i++){
printf("%c", createBlock());
}
return 0;
}
間違っているところがわからないので
お願いします
またブロックの部分を■と表示してブロックフィールド4×4のうちブロックでない部分は と表示するという方法にすると
■■■■
という風に横に並ぶばあいはいいのですが
■
■■
■
とたてに並ぶ場合はこのようにすかすかになってしまいます
どのようにしたらいいですか?