首页游戏大一c语言设计小游戏(c语言课程设计)

大一c语言设计小游戏(c语言课程设计)

编程之家2026-05-16779次浏览

很多朋友对于大一c语言设计小游戏和c语言课程设计不太懂,今天就由小编来为大家分享,希望可以帮助到大家,下面一起来看看吧!

大一c语言设计小游戏(c语言课程设计)

如何用c语言编写一个小游戏

一、数学知识:

长方形的面积S=a*b

长方形周长L=2*(a+b)

其中a b分别为长方形的宽和高。

二、算法分析:

长方形面积及周长均依赖于宽和高,所以先要输入宽高值,然后根据公式计算,输出结果即可。

大一c语言设计小游戏(c语言课程设计)

三、参考代码:

#include<stdio.h>

voidmain()

{

doublea,b;

doubleL,S;

大一c语言设计小游戏(c语言课程设计)

scanf("%lf%lf",&a,&b);//输入宽和高。

L=2*(a+b);//计算周长。

S=a*b;//计算面积。

printf("面积=%lf,周长=%lf

",S,L);//输出结果。

}四、注意事项:

因为没有限制输入为整型,所以使用浮点型用来存储各项值。输入输出要用%lf。

急求一C语言小游戏源程序 至少1000行哈 最好有解释

#include<stdio.h>

#include<stdlib.h>

#include<time.h>

#include<ctype.h>

typedef struct node

{

char data;

struct node*next;

}stack;//定义栈

//入栈操作

stack*push(stack*top,char x)

{

stack*p;

p=(stack*)malloc(sizeof(stack));//开辟节点

if(p==NULL)//如果开辟失败

{

printf("error!\n");

exit(1);

}

x=p->data;

p->next=top;

top=p;

return top;

}

//出栈操作

stack*pop(stack*top)

{

if(top==NULL)

{

printf("stack is null\n");

return top;

}

stack*q;

q=top;

top=top->next;

free(q);//释放节点

return top;

}

//读取栈顶元素

char get(stack*top)

{

if(top==NULL)//如果栈为空

{

printf("stack is null\n");

exit(1);

}

return top->data;

}

stack*getdel(stack*top,char*x)//读取栈顶元素,并删除

{

*x=get(top);

top=pop(top);

return top;

}

void change(char*a,char*b)//将中缀表达式转换为后缀表达式

{

int i=0,j=0;

char ch;

stack*top=NULL;

while(a[i]!='\0')

{

if(isdigit(a[i]))//如果读到数字

{

do

{

b[j]=a[i];//直接送入b

j++;i++;

}while(a[i]!='.');

b[j]='.';

}

if(a[i]=='(')//如果读到'('

top=push(top,a[i]);//直接压入栈中

if(a[i]==')')//如果读到')'

{

ch=get(top);//读取栈顶元素

while(ch!='(')

{

b[j]=ch;//送入b

j++;

top=pop(ch);

ch=get(top);

}

}

if(s[i]=='+'||s[i]=='-')

{

if(top!=NULL)

{

ch=get(top)

while(ch!='(')

{

b[j]=ch;

top=pop(top);

if(top==NULL)

break;

else

ch=get(top);

}

}

top=push(top,a[i])

}

if(a[i]=='*'||a[i]=='/')

{

if(top!=NULL)

{

ch=get(top)

while(ch=='*'||ch=='/')

{

b[j]=ch;

top=pop(top);

if(top==NULL)

break;

else

ch=get(top);

}

}

top=push(top,a[i])

}

i++;

}

while(top!=NULL)//若栈非空,则将栈中运算符依次出栈,送入b

top=getdel(top,&b[j++]);

}

int fun(char*s)//计算结果

{

stack*top=NULL;

int i=0,k=0,r,n,m;

while(s[i]!='\0')

{

if(isdigit(s[i]))//如果是数字

{

do

{

k=10*k+s[i]-48;//转换成数字

i++;

}while(s[i]!='.')

top=push(top,k);

k=0;

}

//如果读到运算符,则栈依次弹出两个数n和m,然后以m运算符n的形式计算,最后将结果入栈

if(s[i]=='+')

{

top=getdel(top,&n);

top=getdel(top,&m);

r=n+m;

top=push(top,r);

}

if(s[i]=='-')

{

top=getdel(top,&n);

top=getdel(top,&m);

r=n-m;

top=push(top,r);

}

if(s[i]=='*')

{

top=getdel(top,&n);

top=getdel(top,&m);

r=n*m;

top=push(top,r);

}

if(s[i]=='/')

{

top=getdel(top,&n);

top=getdel(top,&m);

r=n/m;

top=push(top,r);

}

i++;

}

top=getdel(top,&r);//最后的结果为栈顶元素

return r;

}

int check(char*a)//判断输入表达式是否正确

{

int i=0;

char ch;

while((ch=a[i])!='\0')

{

if(isdigit(ch))//如果是数字

{

if(isdigit(a[i+1]))//如果还是数字

{

i++;//接着读取

coutinue;

}

if(a[i+1]!='.')

{

//若数字不宜'.'结束,则输出错误信息

printf("This is wrong expross format!!!\n");

return 1;

}

i++;

}

i++;

}

return 0;

}

void card()

{

srand(time(0));

int i;

for(i=0;i<4;i++)

{

printf("%3d",rand()%13+1);

}

printf("\n");

}

void main()

{

char a[100],b[100],ch;

while(1)

{

printf("four digits are:");

card();

do

{

printf("input expression:");

scanf("%s%c",a,&ch);

}while(check(a));

change(a,b);

printf("%s=%d\n“,a,fun(b));

if(fun(b)==24)printf("You right!\n");

else printf("You wrong!\n");

printf("y/n:");

ch=getchar();

if(ch=='n'||ch=='N') break;

}

}

注:表达式要求数字末尾有确认符'.'

如何使用C语言编写简单小游戏

C语言是计算机专业都要学习的一门基础学科。一般来说,是比较枯燥的.那么,我们能不能通过编一些小游戏来提高它的趣味性呢?这样学习程序设计,就不会是一件艰苦,枯燥的事,它变得象电脑游戏一样充满好奇,富有乐趣。

例如2048这款游戏:

方法/步骤:

#include<stdio.h>

#include<stdlib.h>

#include<time.h>

#include<conio.h>

#include<windows.h>

#define SIZE 4

static int score=0;

void putn(int n[][SIZE]);

void getn(int n[][SIZE]);

int isempty(int n[][SIZE]);

int isfull(int n[][SIZE]);

void math(int n[][SIZE],char c);

void tow(int n[][SIZE]);

void toa(int n[][SIZE]);

void tos(int n[][SIZE]);

void tod(int n[][SIZE]);

//主函数

int main()

{

int i,j;

int n[SIZE][SIZE];

char c='';

for(i=0;i<SIZE;i++)

{

for(j=0;j<SIZE;j++)

{

n[i][j]=0;

}

}

printf("***********************

"

" 2048(%dX%d)

"

" control:W/A/S/D

"

"press any key to begin

"

"***********************

",SIZE,SIZE);

getch();

system("cls");

//n[0][1]=2048;

//n[0][3]=2048;

while(1)

{

if(isempty(n))

getn(n);

putn(n);

if(!isempty(n)&&isfull(n))

break;

sleep(200);

c=getch();

while(c!='w'&&c!='a'&&c!='s'&&c!='d')

c=getch();

math(n,c);

system("cls");

}

printf(" Game Over!

",score);

return 0;

}

//函数

void putn(int n[][SIZE])

{

int i,j;

for(i=0;i<SIZE;i++)

{

for(j=0;j<SIZE;j++)

printf("|");

printf("|

");

for(j=0;j<SIZE;j++)

{

if(n[i][j]==0)

printf("|");

else

printf("|%4d",n[i][j]);

}

printf("|

");

for(j=0;j<SIZE;j++)

printf("|_____");

printf("|

");

}

printf("score:%d",score);

}

void getn(int n[][SIZE])

{

int a,b;

a=rand()%SIZE;

b=rand()%SIZE;

while(n[a][b]!=0)

{

a=rand()%SIZE;

b=rand()%SIZE;

}

n[a][b]=2;

}

int isempty(int n[][SIZE])

{

int i,j,count=0;

for(i=0;i<SIZE;i++)

for(j=0;j<SIZE;j++)

if(n[i][j]==0)

count++;

return count;

}

int isfull(int n[][SIZE])

{

int i,j,count=0;

for(i=0;i<SIZE;i++)

{

for(j=1;j<SIZE-1;j++)

{

if(n[i][j]==n[i][j+1]||n[i][j]==n[i][j-1])

count++;

}

}

for(j=0;j<SIZE;j++)

{

for(i=1;i<SIZE-1;i++)

{

if(n[i][j]==n[i+1][j]||n[i][j]==n[i-1][j])

count++;

}

}

return count>0?0:1;

}

void math(int n[][SIZE],char c)

{

switch(c)

{

case'w':tow(n);break;

case'a':toa(n);break;

case's':tos(n);break;

case'd':tod(n);break;

default:;

}

}

void tow(int n[][SIZE])

{

int i,j,a;

int m[SIZE];

for(a=0;a<SIZE;a++)

m[a]=0;

for(j=0;j<SIZE;j++)

{

for(a=0;a<SIZE;a++)

{

for(i=0;i<SIZE-1;i++)

{

if(n[i][j]==0)

{

n[i][j]=n[i+1][j];

n[i+1][j]=0;

}

}

}

}

for(j=0;j<SIZE;j++)

{

for(a=0,i=0;i<SIZE;i++)

{

if(n[i][j]!=n[i+1][j]&&n[i][j]!=0||n[i][j]==2048)

{

m[a++]=n[i][j];

n[i][j]=0;

}

else if(n[i][j]==n[i+1][j])

{

m[a++]=n[i][j]+n[i+1][j];

score+=m[a-1];

n[i][j]=0,n[i+1][j]=0;

}

}

for(i=0;i<SIZE;i++)

{

n[i][j]=m[i];

m[i]=0;

}

}

}

void toa(int n[][SIZE])

{

int i,j,a;

int m[SIZE];

for(a=0;a<SIZE;a++)

m[a]=0;

for(i=0;i<SIZE;i++)

{

for(a=0;a<SIZE;a++)

{

for(j=0;j<SIZE-1;j++)

{

if(n[i][j]==0)

{

n[i][j]=n[i][j+1];

n[i][j+1]=0;

}

}

}

}

for(i=0;i<SIZE;i++)

{

for(a=0,j=0;j<SIZE;j++)

{

if(n[i][j]!=n[i][j+1]&&n[i][j]!=0||n[i][j]==2048)

{

m[a++]=n[i][j];

n[i][j]=0;

}

else if(n[i][j]==n[i][j+1])

{

m[a++]=n[i][j]+n[i][j+1];

score+=m[a-1];

n[i][j]=0,n[i][j+1]=0;

}

}

for(j=0;j<SIZE;j++)

{

n[i][j]=m[j];

m[j]=0;

}

}

}

void tos(int n[][SIZE])

{

int i,j,a;

int m[SIZE];

for(a=0;a<SIZE;a++)

m[a]=0;

for(j=SIZE-1;j>=0;j--)

{

for(a=SIZE-1;a>=0;a--)

{

for(i=SIZE-1;i>0;i--)

{

if(n[i][j]==0)

{

n[i][j]=n[i-1][j];

n[i-1][j]=0;

}

}

}

}

for(j=SIZE-1;j>=0;j--)

{

for(a=SIZE-1,i=SIZE-1;i>=0;i--)

{

if(n[i][j]!=n[i-1][j]&&n[i][j]!=0||n[i][j]==2048)

{

m[a--]=n[i][j];

n[i][j]=0;

}

else if(n[i][j]==n[i-1][j])

{

m[a--]=n[i][j]+n[i-1][j];

score+=m[a+1];

n[i][j]=0,n[i-1][j]=0;

}

}

for(i=SIZE-1;i>=0;i--)

{

n[i][j]=m[i];

m[i]=0;

}

}

}

void tod(int n[][SIZE])

{

int i,j,a;

int m[SIZE];

for(a=0;a<SIZE;a++)

m[a]=0;

for(i=SIZE-1;i>=0;i--)

{

for(a=SIZE-1;a>=0;a--)

{

for(j=SIZE-1;j>0;j--)

{

if(n[i][j]==0)

{

n[i][j]=n[i][j-1];

n[i][j-1]=0;

}

}

}

}

for(i=SIZE-1;i>=0;i--)

{

for(a=SIZE-1,j=SIZE-1;j>=0;j--)

{

if(n[i][j]!=n[i][j-1]&&n[i][j]!=0||n[i][j]==2048)

{

m[a--]=n[i][j];

n[i][j]=0;

}

else if(n[i][j]==n[i][j-1])

{

m[a--]=n[i][j]+n[i][j-1];

score+=m[a+1];

n[i][j]=0,n[i][j-1]=0;

}

}

for(j=SIZE-1;j>=0;j--)

{

n[i][j]=m[j];

m[j]=0;

}

}

}

OK,本文到此结束,希望对大家有所帮助。

html免费源码网站(python免费版官方网站进入)建网站不花钱免费建站 免费的h5制作网站