C语言小项目-贪吃蛇第1天地图实现

1. 项目演示(132.1)

承上启下:

  • 上:C语言基础、数据结构链表基础,C变量、流程控制、函数、指针、结构体等
  • 下:Linux系统编程,文件编程、进程、线程、通信、第三方包等

2. 基础要求(133.2)

  • C编程基础
  • Linux基本操作

3. 为什么需要ncurse(134.3)

  • gets()、scanf()、getchar() 都需要回车来执行
  • ncurse按键响应及时

4. curse输入输出(审核不过/贪吃蛇)

4.1安装ncurse:

sudo apt-get install libncurses5-dev

4.2 代码

在这里插入图片描述

  • cursedemo.c
#include <curses.h>

int main()
{
        initscr();//ncurse界面的初始化函数
        printw("this is a test.\n");//在ncurse模式下的printf
        getch();//等待用户输入,如果没有这句话,程序就退出了,看不到运行的结果,也就是看不到上面那句话
        endwin();//程序退出,调用改函数来恢复shell终端的显示,如果没有这句话,shell终端字乱码,坏掉。

        return 0;
}
  • cursedemo1.c
#include <curses.h>

int main()
{
        char c;

        initscr();
        printw("Please input:\n");
        c=getch();
        printw("\nWhat you input is :%c\n",c);
        getch();
        endwin();

        return 0;
}

5. ncurse上下左右键获取(135.5)

5.1 nurse的上下左右键值

在这里插入图片描述

5.2 代码

  • cursedemo2.c
#include <curses.h>

int main()
{
        //char c;       //1byte 8bit 128
        int key;

        initscr();//ncurse界面的初始化函数
        keypad(stdscr,1);//从标准的stdscr中接受功能键,1代表是接受

        while(1){
                key=getch();
                switch(key){
                        /*case 0402:
                                printw("DOWN\n");
                                break;
                        case 0403:
                                printw("UP\n");
                                break;
                        case 0404:
                                printw("LEFT\n");
                                break;
                        case 0405:
                                printw("RIGHT\n");
                                break;*/
                        case KEY_DOWN:
                                printw("DOWN\n");
                                break;
                        case KEY_UP:
                                printw("UP\n");
                                break;
                        case KEY_LEFT:
                                printw("LEFT\n");
                                break;
                        case KEY_RIGHT:
                                printw("RIGHT\n");
                                break;

                }
        }
        endwin();

        return 0;
}

6. 地图规划(136.6)

在这里插入图片描述
在这里插入图片描述

7. 地图实现一(137.7)

  • snake1.c
#include <curses.h>

void initNcurse()
{
	initscr();	
	keypad(stdscr,1);
}

void gamePic()
{
	int line;
	int list;

	for(line=0;line<20;line++){
		for(list=0;list<20;list++){
			printw("##");
		}
		printw("\n");
	}

}

int main()
{
	initNcurse();
	gamePic();
	getch();

	return 0;
}
  • snake2.c
#include <curses.h>

void initNcurse()
{
        initscr();
        keypad(stdscr,1);
}

void gamePic()
{
        int line;
        int list;

        for(line=0;line<20;line++){
                if(line==0){
                        for(list=0;list<20;list++){
                                printw("--");
                        }
                        printw("\n");
                        for(list=0;list<=20;list++){
                                if(list==0 || list==20){
                                printw("|");
                                }
                                else{
                                        printw("  ");
                                }
                        }

                }
                printw("\n");
        }

}

int main()
{
        initNcurse();
        gamePic();
        getch();
        endwin();

        return 0;
}

8. 贪吃蛇地图实现结束(138.8)

  • snake3.c
#include <curses.h>

void initNcurse()
{
	initscr();	
	keypad(stdscr,1);
}

void gamePic()
{
	int line;
	int list;

	for(line=0;line<20;line++){
		if(line==0){
			for(list=0;list<20;list++){
				printw("--");
			}
			printw("\n");
			for(list=0;list<=20;list++){
				if(list==0 || list==20){
				printw("|");
				}
				else{
					printw("  ");
				}
			}
			printw("\n");
		}
		if(line>0 && line<=19){
			for(list=0;list<=20;list++){
				if(list==0 || list==20){
					printw("|");
				}
				else{
					printw("  ");
				}
			}
		  	printw("\n");
		}
		if(line==19){
			for(list=0;list<20;list++){
				printw("--");
			}
			printw("\nBy Jessie\n");
		}
		
	}

}

int main()
{
	initNcurse();
	gamePic();

	getch();
	endwin();

	return 0;
}

9. 贪吃蛇地图优化及算法说明(139.9)

  • snake3.c
#include <curses.h>

void initNcurse()
{
	initscr();	
	keypad(stdscr,1);
}

void gamePic()
{
	int line;
	int list;

	for(line=0;line<20;line++){
		if(line==0){
			for(list=0;list<20;list++){
				printw("--");
			}
			printw("\n");
			for(list=0;list<=20;list++){
				if(list==0 || list==20){
				printw("|");
				}
				else{
					printw("  ");
				}
			}
			printw("\n");
		}
		if(line>0 && line<=19){
			for(list=0;list<=20;list++){
				if(list==0 || list==20){
					printw("|");
				}
				else{
					printw("  ");
				}
			}
		  	printw("\n");
		}
		if(line==19){
			for(list=0;list<20;list++){
				printw("--");
			}
			printw("\nBy Jessie\n");
		}
		
	}

}

int main()
{
	initNcurse();
	gamePic();

	getch();
	endwin();

	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值