c_c语言 - CSDN
c 订阅
C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。尽管C语言提供了许多低级处理的功能,但仍然保持着跨平台的特性,以一个标准规格写出的C语言程序可在包括类似嵌入式处理器以及超级计算机等作业平台的许多计算机平台上进行编译。 [1] 展开全文
C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。尽管C语言提供了许多低级处理的功能,但仍然保持着跨平台的特性,以一个标准规格写出的C语言程序可在包括类似嵌入式处理器以及超级计算机等作业平台的许多计算机平台上进行编译。 [1]
信息
类    别
程序设计语言
影响语言
C++、C#、D、Java、JavaScript、ObjectPHP等
创始时间
1972年
主要编译器
Visual C++、Clang、GCC、Turbo C等
中文名
C语言
创始人
Dennis MacAlistair Ritchie
发    源
BCPL语言
外文名
C Programming Language
c语言简介
C语言是一门面向过程的计算机编程语言,与C++、Java等面向对象编程语言有所不同。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、仅产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。C语言描述问题比汇编语言迅速、工作量小、可读性好、易于调试、修改和移植,而代码质量与汇编语言相当。C语言一般只比汇编语言代码生成的目标程序效率低10%~20%。因此,C语言可以编写系统软件。 [2]  当前阶段,在编程领域中,C语言的运用非常之多,它兼顾了高级语言和汇编语言的优点,相较于其它编程语言具有较大优势。计算机系统设计以及应用程序编写是C语言应用的两大领域。同时,C语言的普适较强,在许多计算机操作系统中都能够得到适用,且效率显著。 [3]  冯.诺依曼在1945年提出了现代计算机的若干思想,被后人称为冯.诺依曼思想,这是计算机发展史上的里程碑。自1945 年至今大多采用其结构,因此冯.诺依曼被称为计算机之父。他的体系结构计算机由运算器、控制器、存储器、输入设备、输出设备五大部件构成。 C语言拥有一套完整的理论体系经过了漫长的发展历史,在编程语言中具有举足轻重的地位。 [4] 
收起全文
精华内容
参与话题
  • 一门初级、从入门到精通的C语言C++语法教程,由毕业于清华大学的业内人士执课。从简单的HelloWorld入门程序,到深入的C语言C++核心概念,均为您娓娓道来,言之必详、听之必懂。让C语言C++编程变得简单,让C语言C++...
  • C语言基础

    千人学习 2020-01-15 18:14:28
    一、C语言自我YY 1)、C语言是许多高级计算机语言的基础,学好C语言能更好的学习其他高级语言,为以后的学习打基础;往深学C语言的话那就是学到C在Linux里的应用,Linux十分强大。 2)、C语言是一种计算机程序设计语言...
  • c语言入门自学 零基础学c语言教程

    万次阅读 多人点赞 2019-05-04 14:07:32
    考二级c的话c语言书籍的话推荐看谭浩强,但是你要用于工作上的话我推荐你看传智播客的C语言教程!精通C语言肯定得花上几个月时间。 很多人对学习C语言感到无从下手,经常问我同一个问题:究竟怎样学习C语言? 我是...

    C语言通过自学软件工程师要多久?
    许多同学问C语言怎么学?考二级c的话c语言书籍的话推荐看谭浩强,但是你要用于工作上的话我推荐你看传智播客的C语言教程!精通C语言肯定得花上几个月时间。
    很多人对学习C语言感到无从下手,经常问我同一个问题:究竟怎样学习C语言? 我是一个教师,已经开发了很多年的程序,和很多刚刚起步的人一样,学习的第一个计算机语言就是C语言。经过这些年的开发,我深深的体会到C语言对于一个程序设计人员多么的重要,如果不懂C语言,你想写底层程序这几乎听起来很可笑,不懂C语言,你想写出优秀高效的程序,这简直就是天方夜谭。

    C语言软件工程师都学什么?
    零基础学c语言教程内容:
    按照日期来看就行了,零基础班主要讲一些基础,适合入门学习。
    1.C语言概述,学习方法,开发环境搭建,HelloWorld案例分析,常量与变量;
    2.数据类型,数据类型转换,数据输入与输出;
    3.C语言运算符,C语言操作符;
    4.C语言表达式,表达式优先级;
    5.C语言流程控制,分支,顺序,循环逻辑控制;
    6.函数概述与引用,简单递归,简单嵌套,C语言调用函数示例;
    7.数组,二维数组,高维数组,详细案例;
    8.指针,指针与地址,指针与数组;
    9.指针与字符串,指针与函数,多重指针;
    10.结构体,共用体,枚举,typedef;
    11.宏定义,预编译,文件包含,条件编译;
    12.内存分析,作用域,生存期,可见域;
    13.C语言调试,排错,分析技巧;
    14.简单链表;
    15.综合复习型测试

    零基础学C语言教程百度盘下载地址
    http://www.xuexiluxian.net/cyuyan-rumen.html

    展开全文
  • 从小白入门C语言

    千人学习 2018-10-22 21:38:10
    这是一门通俗易懂的C语言视频教程!  C语言具有高效、灵活、功能丰富、表达力强和较高的可移植性等特点,在程序员中备受青睐,成为近25年使用为广泛的编程语言。目前市面上的C视频教程很多,但是千篇一律,枯燥...
  • C#完整实现消消乐

    千次阅读 多人点赞 2020-06-03 17:44:35
    C#课程设计作业,花了两天时间,其中抠图找图都花了大半天(后悔以前没去学PS,后悔莫及,所以最后做出来自己都看不下去的粗糙,不过只能这样了) 第一天上午:构思整个的大体框架,要实现的功能 ...

    C#课程设计作业,花了两天时间,其中抠图找图都花了大半天(后悔以前没去学PS,后悔莫及,所以最后做出来自己都看不下去的粗糙,不过只能这样了)
    第一天上午:构思整个的大体框架,要实现的功能
    第一天下午:找图,抠图,找资源,地图的绘制
    第二天上午:被搜索联通块以及方块的消除难住了,后面参考了一些才解决主要核心的,包括判断相邻,执行交换,消除,执行下落,利用了3个Timer组件
    第二天下午:技能体系,充值体系,修修改改,勉强做出来了

    (一)课程作业:C#消消乐完整实现
    利用 C#winform 实现了消消乐游戏的制作 开发环境 VS2015,SQL sever 2008,
    实现功能:
    1.登录,注册窗口
    2.主界面消消乐的实现
    3.技能体系:3个技能
    4.充值体系
    5.背包功能的实现
    6.闯关功能的实现
    (二)主要窗体
    1.登录,注册
    在这里插入图片描述
    在这里插入图片描述
    2.主界面
    在这里插入图片描述
    3.充值界面,教学界面
    在这里插入图片描述
    在这里插入图片描述
    (三)各窗体核心代码
    1.登录,注册

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Data.SqlClient;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using System.Media;
    
    namespace KillGame
    {
        public partial class Login : Form
        {
            public Login()
            {
                InitializeComponent();
                
            }
    
            private void button1_Click(object sender, EventArgs e)//登录
            {
                if(checkBox1 .Checked ==true)
                {
                    if (textBox1.Text.Trim() == "123456" && textBox2.Text.Trim() == "123456")
                    {
                        string sname = "老师";
                        startProgress(progressBar1);
                        this.Hide();
                        Game game = new KillGame.Game(sname);
                        game.Show();
    
                    }
                    else
                    {
                        MessageBox.Show("登录失败,超级用户账号密码都是123456,再试试");
                    }
                }
                else
                {
                    string id = textBox1.Text.Trim().ToString();
                    string pwd = textBox2.Text.Trim().ToString();
                    if (textBox1.Text.Trim() == "" || textBox2.Text.Trim() == "")
                    {
                        MessageBox.Show("请输入账号或密码!");
                        return;
                    }
                    SqlConnection conn = new SqlConnection(@"Data Source=(local);Initial Catalog=MBook;Persist Security Info=True;User ID=sa;Password='zdllxf211215'");
                    string strselect = "select Name from TUser where id='" + textBox1.Text.Trim().ToString() + "'and pwd='" + textBox2.Text.Trim().ToString() + "'";
                    SqlCommand cmd = new SqlCommand(strselect, conn);
                    conn.Open();
                    string name = cmd.ExecuteScalar().ToString();
                    if (name != null)
                    {
                        startProgress(progressBar1);
                        this.Hide();
                        Game game = new KillGame.Game(name);
                        game.Show();
    
                    }
                    else
                    {
                        MessageBox.Show("登录失败!");
                    }
                }
               
              
            }
    
            private void button2_Click(object sender, EventArgs e)//取消
            {
                this.Close();
            }
    
            private void button3_Click(object sender, EventArgs e)//注册
            {
                Logon logon = new Logon();
                logon.Show();
            }
            public void SetCursor(Bitmap cursor, Point hotPoint)//自定义光标
            {
                int hotX = hotPoint.X;
                int hotY = hotPoint.Y;
                Bitmap myNewCursor = new Bitmap(cursor.Width * 2 - hotX, cursor.Height * 2 - hotY);
                Graphics g = Graphics.FromImage(myNewCursor);
                g.Clear(Color.FromArgb(0, 0, 0, 0));
                g.DrawImage(cursor, cursor.Width - hotX, cursor.Height - hotY, cursor.Width,
                cursor.Height);
                this.Cursor = new Cursor(myNewCursor.GetHicon());
                g.Dispose();
                myNewCursor.Dispose();
            }
            private void startProgress(ProgressBar pBar1)
            {
                pBar1.Visible = true;// 显示进度条控件.
                pBar1.Minimum = 1;// 设置进度条最小值.
                pBar1.Maximum = 15;// 设置进度条最大值.
                pBar1.Value = 1;// 设置进度条初始值
                pBar1.Step = 1;// 设置每次增加的步长
                               //创建Graphics对象
                Graphics g = pBar1.CreateGraphics();
                for (int x = 1; x <= 15; x++)
                {
                    //执行PerformStep()函数
                    pBar1.PerformStep();
                    string str = Math.Round((100 * x / 15.0), 2).ToString("#0.00 ") + "%";
                    Font font = new Font("Times New Roman", (float)10, FontStyle.Regular);
                    PointF pt = new PointF(pBar1.Width / 2 - 17, pBar1.Height / 2 - 7);
                    g.DrawString(str, font, Brushes.Black , pt);
                    //每次循环让程序休眠300毫秒
                    System.Threading.Thread.Sleep(300);
                }
                pBar1.Visible = false;
                //MessageBox.Show("success!");
            }
    
            private void Login_Load(object sender, EventArgs e)//窗体加载
            {
    
                SoundPlayer bm = new SoundPlayer("Music\\bj.wav");//背景音乐
                bm.PlayLooping();
                Bitmap a = (Bitmap)Bitmap.FromFile("Image\\mouse.png");
                SetCursor(a, new Point(0, 0));
    
            }
        }
    }
    
    
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Data.SqlClient;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    namespace KillGame
    {
        public partial class Logon : Form
        {
            public Logon()
            {
                InitializeComponent();
            }
    
            private void button1_Click(object sender, EventArgs e)//注册
            {
                if (textBox1.Text.Trim() == "" || textBox2.Text.Trim() == "" || textBox3.Text.Trim() == "" || textBox4.Text.Trim()=="")
                {
                    MessageBox.Show("请输入完整信息!");
                    return;
                }
                if(textBox2 .Text .Trim ()==textBox3 .Text .Trim())
                {
                    SqlConnection conn = new SqlConnection(@"Data Source=(local);Initial Catalog=MBook;Persist Security Info=True;User ID=sa;Password='zdllxf211215'");
                    string strselect = "insert into TUser values('" + textBox1.Text.Trim() + "','" + textBox4.Text.Trim() + "','" + textBox2.Text.Trim() + "')";
                    SqlCommand cmd = new SqlCommand(strselect, conn);
                    conn.Open();
                    int a = cmd.ExecuteNonQuery();
                    if (a == 1)
                    {
                        MessageBox.Show("注册成功,快去征战吧,骚年!");
                    }
                    else
                    {
                        MessageBox.Show("注册失败!");
                    }
                }
                else
                {
                    MessageBox.Show("密码前后不一致,注册失败!");
                }
                
            }
            public void SetCursor(Bitmap cursor, Point hotPoint)//自定义光标
            {
                int hotX = hotPoint.X;
                int hotY = hotPoint.Y;
                Bitmap myNewCursor = new Bitmap(cursor.Width * 2 - hotX, cursor.Height * 2 - hotY);
                Graphics g = Graphics.FromImage(myNewCursor);
                g.Clear(Color.FromArgb(0, 0, 0, 0));
                g.DrawImage(cursor, cursor.Width - hotX, cursor.Height - hotY, cursor.Width,
                cursor.Height);
                this.Cursor = new Cursor(myNewCursor.GetHicon());
                g.Dispose();
                myNewCursor.Dispose();
            }
    
            private void button2_Click(object sender, EventArgs e)//取消
            {
                this.Close();
            }
    
            private void Logon_Load(object sender, EventArgs e)//加载
            {
                Bitmap a = (Bitmap)Bitmap.FromFile("Image\\mouse.png");
                SetCursor(a, new Point(0, 0));
            }
        }
    }
    
    

    2.主界面窗口

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using System.Media;
    
    namespace KillGame
    {
        public partial class Game : Form
        {
            Star[,] getmap = new Star[15, 12];//地图信息
            Point topleft = new Point(60, 5);//坐标
            int gamestart = 0;//游戏开始
            int gamestop = 0;
            int ispic = 0;//记录是否选中方块
            int pickRow = 0;//记录选中的行
            int pickCol = 0;//记录选中的列
            int dropRow = 0;
            int dropCol = 0;
            int changeFlag = 0;//记录是否交换成功
            int size = 60;//方块的大小
            string news;//消息列表
            int height = 10;//地图大小
            int width = 10;
    
            int time = 60;//时间
            int money = 0;//金币
            int score = 0;//积分
            int gnum = 1;//关卡数
            int step = 60;
    
            int skill1num = 0;//技能1使用次数
            int skill2num = 0;//技能2使用次数
            int skill3num = 0;//技能3使用次数
    
            Star s1 = new Star(starcolor., 60, 0, new Point(0, 0));//用于临时交换的两个变量
            Star s2 = new Star(starcolor., 60, 0, new Point(0, 0));
            int x1 = 0;
            int x2 = 0;
            int y1 = 0;
            int y2 = 0;
    
            public Game()
            {
                InitializeComponent();
                SetStyle(ControlStyles.AllPaintingInWmPaint, true);
                SetStyle(ControlStyles.DoubleBuffer, true);
            }
            
            public Game (string name)//构造函数
            {
                InitializeComponent();
                Name = name;
            }
           
            public void SkillReload()//刷新技能
            {
    
            }
            public void GetMap()//随机生成地图
            {
                Random rnd = new Random(DateTime.Now.Second);
                for (int i=1;i<=height ;i++)
                    for(int j=1;j<=width ; j++)
                    {
                        getmap[i, j] = new KillGame.Star((starcolor)rnd.Next(1, 7), size, 0, new Point(topleft.X + (j - 1) * size, topleft.Y + (i - 1) * size));
                    }
            }
            public void ReGetMap(Graphics g)//绘制地图
            {
                for (int i = 1; i <= height ; i++)
                    for (int j = 1; j <= width ; j++)
                    {                    
                        getmap[i, j].Drawing(g);
                    }
    
            }
            public bool GetRowandClo(Point point,out int row,out int clo)//判断点击是否有效,并且输出点击的行列坐标
            {
                int srow = (point.Y - topleft.Y) / size + 1;
                int sclo = (point.X - topleft.X) / size + 1;
                if (srow <=10&&srow >=1&&sclo <=10&&sclo >= 1)
                {
                    row = srow;
                    clo = sclo;
                    return true;//点击有效,超出地图范围
                }
                else
                {
                    row = -1;
                    clo = -1;
                    return false;//点击无效,超出地图范围
                }
            }
            public void SwapStar(int x1,int y1,int x2,int y2)//交换星星,只是交换了两个星星的颜色
            {
                starcolor scolor = getmap[x1, y1].Color;
                getmap[x1, y1].Color = getmap[x2, y2].Color;
                getmap[x2, y2].Color = scolor;
            }
           
            public bool KillStar()
            {
    
                int a = 0;
                bool isclean = false;
                //初始化消除标记
                for (int i = 1; i <= height; i++)
                    for (int j = 1; j <= width; j++)
                    {
                        getmap[i, j].Killed  = 0;
                    }
    
                //遍历每个方格,每个都向右向下搜索
                for (int i = 1; i <= height; i++)
                    for (int j = 1; j <= width; j++)
                    {
                        if (getmap[i, j].Color != starcolor.)//如果有颜色则搜索
                        {
                            //纵向搜
                            int cnt = 1;//记录相连的同色方块个数   
                            int x = i + 1;
                            while (x <= height)
                            {
                                if (getmap[x, j].Color == getmap[i, j].Color)//如果颜色相同记录个数
                                { x++; cnt++; }
                                else break;
                            }
                            if (cnt >= 3)//如果大于等于3个,标记将消除
                            {
                                isclean = true;
                                for (int k = i; k < i + cnt; k++)
                                    getmap[k, j].Killed  = 1;
                                a += cnt;
                            }
                            //横向搜
                            cnt = 1;
                            int y = j + 1;
                            while (y <= width)
                            {
                                if (getmap[i, y].Color == getmap[i, j].Color)//如果颜色相同记录个数
                                { y++; cnt++; }
                                else break;
                            }
                            if (cnt >= 3)//如果大于等于3个,标记将消除
                            {
                                isclean = true;
                                for (int k = j; k < j + cnt; k++)
                                    getmap[i, k].Killed  = 1;
                                a  += cnt;
                            }
                        }
                    }
                //注意这里一定要先标记再同意消除,如果直接在上面消除,会导致十字不可消
                for (int i = 1; i <= height; i++)//将待消除的方块消除
                    for (int j = 1; j <= width; j++)
                    {
                        if (getmap[i, j].Killed  == 1)
                            getmap[i, j].Color = starcolor.;
                    }
                time += a  /= 3;//奖励时间
                time = Math.Min(time, 40);//时间不能超过最大的40
    
                score  += a  * 10;//奖励分数
                money += a ;//奖励金钱
    
                timelable .Text = time.ToString() + "s";//更新标签
                moneylable.Text = money.ToString();
               scorelable.Text = score .ToString();
               if(money >money )
                    Music("Music\\1.wav");
                if (score >=500+gnum * 250)//晋级成功
                {
                    timer1.Enabled = false;
                    time +=30;//奖励时间
                    time = Math.Min(time, 40);//时间不能超过最大的40
                    timelable.Text = time.ToString() + "s";//更新标签
                    money += gnum * 40;
                    moneylable.Text = money.ToString();//奖励金币
                    score = 0;//积分清零
                    scorelable.Text = score.ToString();
                    gnum++;
                    snumlable.Text = gnum.ToString();
                    textBox1.Text = "消息:恭喜您晋级成功," + Name + "阁下";
                    Music("Music\\12902.wav");
                    GetMap();
                    timer3.Enabled = true;
                    timer1.Enabled = true;
                    pictureBox4.Invalidate();
    
                    
    
                }
                return isclean;//返回是否可消
            }
            private void button4_Click(object sender, EventArgs e)//开始游戏
            {
                Bitmap a = (Bitmap)Bitmap.FromFile("Image\\mouse.png");
                SetCursor(a, new Point(0, 0));
                GetMap();
                gamestart = 1;
                gamestop = 0;
                time = 60;
                score = 0;
                money = 0;
                gnum = 1;
                snumlable.Text = gnum.ToString();
                namelable.Text = Name;
                textBox1.Text = "";
                textBox1.AppendText("消息:欢迎您来到KillGame!" + Name + "阁下!");
                pictureBox4.Invalidate();//重绘图片
                timer3.Enabled = true;
                timer1.Enabled = true;//开始计时
    
            }        
    
                    
    
    
            private void button1_Click(object sender, EventArgs e)//技能1购买
            {
    
                if (gamestart  == 1 &&gamestop  == 0)
                {
                    timer1.Enabled = false;
                    timelable.Text = "暂停";
                    if (MessageBox.Show("是否花费30金币购买火舞旋风?", "购买", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK)
                    {
                        if (money >= 30)
                        {
                            money -= 30;
                            skill1num += 1;
                            s1lable.Text = skill1num.ToString();
                        }
                        else
                        {
                            MessageBox.Show("金币不足,骚年,开启钞能力吧!点击左下角充值系统,你值得拥有!", "购买失败", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                        }
                    }
                    moneylable .Text = money.ToString();
                    timer1.Enabled = true;
                }
            }
    
            private void button2_Click(object sender, EventArgs e)//技能2购买
            {
    
                if (gamestart == 1 && gamestop == 0)
                {
                    timer1.Enabled = false;
                    timelable.Text = "暂停";
                    if (MessageBox.Show("是否花费30金币购买万仞浮生?", "购买", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK)
                    {
                        if (money >= 30)
                        {
                            money -= 30;
                            skill2num += 1;
                            s2lable.Text = skill2num.ToString();
                        }
                        else
                        {
                            MessageBox.Show("金币不足,骚年,开启钞能力吧!点击左下角充值系统,你值得拥有!", "购买失败", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                        }
                    }
                    moneylable.Text = money.ToString();
                    timer1.Enabled = true;
                }
            }
    
            private void button3_Click(object sender, EventArgs e)//技能3购买
            {
    
                if (gamestart == 1 && gamestop == 0)
                {
                    timer1.Enabled = false;
                    timelable.Text = "暂停";
                    if (MessageBox.Show("是否花费30金币购买时间掌控?", "购买", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK)
                    {
                        if (money >= 30)
                        {
                            money -= 30;
                            skill3num += 1;
                            s3lable.Text = skill3num.ToString();
                        }
                        else
                        {
                            MessageBox.Show("金币不足,骚年,开启钞能力吧!点击左下角充值系统,你值得拥有!", "购买失败", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                        }
                    }
                    moneylable.Text = money.ToString();
                    timer1.Enabled = true;
                }
            }
    
            
            private void button5_Click(object sender, EventArgs e)//退出游戏
            {
                Application.Exit();
            }
    
            private void button6_Click(object sender, EventArgs e)//新手教学
            {
                About about = new About();
                about.Show();
            }
    
            private void pictureBox1_Click(object sender, EventArgs e)//技能1火舞旋风释放
            {
                if(gamestart ==1&&gamestop == 0)
                {
                    if(skill1num > 0)
                    {
                        skill1num--;
                        s1lable.Text = skill1num.ToString();
                        textBox1.Text = "消息:伟大的"+Name +"阁下,您使用了火舞旋风!";
                        Music("Music\\skill.wav");
                        Random myRand = new Random(DateTime.Now.Second);//随机选择一种颜色
                        int x = myRand.Next(1, 7);
    
                        for (int i = 1; i <= height; i++)//搜索所有方块,若是选择的颜色则消除
                            for (int j = 1; j <= width; j++)
                            {
                                if ((int)getmap[i, j].Color == x)
                                    getmap[i, j].Color = starcolor.;
                            }
                        timer3.Enabled = true;
                        pictureBox4.Invalidate();
                    }
                    else
                    {
                        timer1.Enabled = false;
                        timelable .Text = "暂停";
                        MessageBox.Show("骚年,你的魔法不足,不氪金怎么变强,试试你的钞能力吧", "使用失败", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                        timer1.Enabled = true;
    
                    }
                }
            }
    
            private void pictureBox2_Click(object sender, EventArgs e)//技能2万仞浮生释放
            {
    
                if (gamestart == 1 && gamestop == 0)
                {
                    if (skill2num > 0)
                    {
                        timer1.Enabled = false;
                        skill2num--;
                        s2lable.Text = skill2num.ToString();
                        textBox1.Text = "消息:伟大的" + Name + "阁下,您使用了万物浮生!";
                        Music("Music\\skill.wav");
                        GetMap();  //重新刷新地图                                     
                        timer3.Enabled = true;
                        timer1.Enabled = true;
                        pictureBox4.Invalidate();
                    }
                    else
                    {
                        timer1.Enabled = false;
                        timelable.Text = "暂停";
                        MessageBox.Show("骚年,你的魔法不足,不氪金怎么变强,试试你的钞能力吧", "使用失败", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                        timer1.Enabled = true;
    
                    }
                }
            }
    
            private void pictureBox3_Click(object sender, EventArgs e)//技能3时间掌控释放
            {
    
                if (gamestart == 1 && gamestop == 0)
                {
                    if (skill3num > 0)
                    {
                        skill3num--;
                        s3lable.Text = skill3num.ToString();
                        time += 10; //时间增加
                        timelable.Text = time.ToString() + "s"; //更新标签
                        textBox1.Text ="消息:伟大的" + Name + "阁下,您使用了时间掌控!";
                        Music("Music\\skill.wav");
                    }
                    else
                    {
                        timer1.Enabled = false;
                        timelable.Text = "暂停";
                        MessageBox.Show("骚年,你的魔法不足,不氪金怎么变强,试试你的钞能力吧", "使用失败", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                        timer1.Enabled = true;
    
                    }
                }
            }
            private void Music(string path)
            {
                SoundPlayer player = new SoundPlayer();
                player.SoundLocation = path;
                player.Load();
                player.Play();
    
            }
    
            private void timer1_Tick(object sender, EventArgs e)//记录时间
            {
                if(time == 0)
                {
                    gamestart = 0;
                    timer1.Enabled = false;
                    MessageBox.Show("游戏结束!");
                }
                timelable.Text = time.ToString() + "s";
                time--;
    
            }
    
            private void pictureBox4_MouseDown(object sender, MouseEventArgs e)//鼠标点击
            {
                if (timer3.Enabled == false && gamestart == 1 && gamestop == 0)
                {
                    Music("Music\\click.wav");
                    if (ispic == 0)
                    {
                        int row, col;
                        bool value = GetRowandClo(new Point(e.X, e.Y), out row, out col);//第一次点击,得到点击位置的行列
                        if (value == true)
                        {
                            if (getmap[row, col].Color != starcolor.)
                            {
                                pickRow = row;
                                pickCol = col;
                                ispic = 1;
                                getmap[pickRow, pickCol].Selected();
    
                                //Music("Music\\12596.wav");
    
                            }
    
    
                        }
                    }
                    else
                    {
    
                        int row, col;
                        bool value = GetRowandClo(new Point(e.X, e.Y), out row, out col);//第二次点击,得到点击位置的行列
                        if (value == true)
                        {
                            if (getmap[row, col].Color != starcolor.)
                            {
                                if (row == pickRow && Math.Abs(col - pickCol) == 1 || col == pickCol && Math.Abs(row - pickRow) == 1)//判断是否相邻
                                {
                                    dropCol = col;
                                    dropRow = row;
                                    getmap[pickRow, pickCol].Select = 0;
                                    s1 = new Star(getmap[pickRow, pickCol].Color, getmap[pickRow, pickCol].Size, getmap[pickRow, pickCol].Select, getmap[pickRow, pickCol].Top);
                                    s2 = new Star(getmap[dropRow, dropCol].Color, getmap[dropRow, dropCol].Size, getmap[dropRow, dropCol].Select, getmap[dropRow, dropCol].Top);
                                    getmap[pickRow, pickCol].Color = starcolor.;
                                    getmap[dropRow, dropCol].Color = starcolor.;
                                    pictureBox4.Invalidate();
                                    x1 = s1.Top.X;
                                    y1 = s1.Top.Y;
                                    x2 = s2.Top.X;
                                    y2 = s2.Top.Y;
                                    changeFlag = 0;
                                    timer1.Enabled = false;
                                    timer2.Enabled = true;//执行交换
    
    
                                }
                                else//重新标记
                                {
                                    getmap[pickRow, pickCol].Select = 0;
                                    pickRow = row;
                                    pickCol = col;
                                    getmap[pickRow, pickCol].Selected();
                                    ispic = 1;
                                }
                            }
    
                        }
    
                    }
    
                }
                pictureBox4.Invalidate();
            }
            private void timer2_Tick(object sender, EventArgs e)//交换
            {
                pictureBox4.Invalidate();
                int tax = 0;
                if (x1 == x2)
                {
                    if(y1<y2)
                    {
                        s1.Top = new Point(s1.Top.X, s1.Top.Y + step);
                        s2.Top = new Point(s2.Top.X, s2.Top.Y - step);
                        if (s1.Top.Y >= y2)
                            tax = 1;
                        
                    }
                    else
                    {
                        s1.Top = new Point(s1.Top.X, s1.Top.Y - step);
                        s2.Top = new Point(s2.Top.X, s2.Top.Y + step);
                        if (s1.Top.Y <= y2)
                            tax = 1;
                    }
                }
                else if (y1 == y2)
                {
                    if(x1<x2)
                    {
                        s1.Top = new Point(s1.Top.X + step, s1.Top.Y);
                        s2.Top = new Point(s2.Top.X - step, s2.Top.Y);
                        if (s1.Top.X >= x2)
                            tax = 1;
                       
    
                    }
                    else
                    {
                        s1.Top = new Point(s1.Top.X - step, s1.Top.Y);
                        s2.Top = new Point(s2.Top.X + step, s2.Top.Y);
                        if (s1.Top.X <= x2)
                            tax = 1;
                    }
                }
                if(tax == 1)
                {
                    timer2.Enabled = false;//
                    timer1.Enabled = true;//计时器继续工作
                    getmap[pickRow, pickCol].Color = s2.Color;
                    getmap[dropRow, dropCol].Color = s1.Color;//交换颜色
                    pictureBox4.Invalidate();
                   if(changeFlag == 0)
                    {
                        if (!KillStar())//判断是否可以消除
                        {
                            //继续交换回来
                            s1 = new Star(getmap[pickRow, pickCol].Color, getmap[pickRow, pickCol].Size, getmap[pickRow, pickCol].Select, getmap[pickRow, pickCol].Top);
                            s2 = new Star(getmap[dropRow, dropCol].Color, getmap[dropRow, dropCol].Size, getmap[dropRow, dropCol].Select, getmap[dropRow, dropCol].Top);
                            getmap[pickRow, pickCol].Color = starcolor.;
                            getmap[dropRow, dropCol].Color = starcolor.;
                            pictureBox4.Invalidate();
                            timer1.Enabled = false;
                            timer2.Enabled = true;//重新交换
                            getmap[pickRow, pickCol].Select = 0;
                            ispic = 0;
                            changeFlag = 1;//这次是交换成功了
    
                        }
                        else
                        {
                            timer3.Enabled = true;//执行下落
                            pickRow = 0;
                            pickCol = 1;
                            ispic = 0;
                        }
                    }
                }
    
            }
    
            private void timer3_Tick(object sender, EventArgs e)//下落
            {
                for (int j=1; j<=width;j++)
                {
                    for (int i = height; i >= 2; i--)
                    {
                        if (getmap[i, j].Color == starcolor.)
                        {
                            for (int c = i; c >= 2; c--)
                                SwapStar(c, j, c - 1, j);
                            break;
                        }
                    }
                }
                Random myRand = new Random();
                for (int j = 1; j <= width; j++)
                {
                    if (getmap[1, j].Color == starcolor.)
                        getmap[1, j].Color = (starcolor)myRand.Next(1, 7);
                }
                pictureBox4.Invalidate();
                int tax = 0;
                for (int i = 1; i <= height; i++)
                {
                    for (int j = 1; j <= width; j++)
                    {
                        if(getmap [i,j].Color ==starcolor.)
                        {
                            tax = 1;
                            break;
                        }
                    }
                    if (tax == 1)
                        break;
                }
                if(tax == 0)
                {
                    if(!KillStar ())
                    {
                        timer3.Enabled = false;
                    }
                }
    
    
    
            }
    
            private void s3lable_Click(object sender, EventArgs e)
            {
    
            }
            public void SetCursor(Bitmap cursor, Point hotPoint)//自定义光标
            {
                int hotX = hotPoint.X;
                int hotY = hotPoint.Y;
                Bitmap myNewCursor = new Bitmap(cursor.Width * 2 - hotX, cursor.Height * 2 - hotY);
                Graphics g = Graphics.FromImage(myNewCursor);
                g.Clear(Color.FromArgb(0, 0, 0, 0));
                g.DrawImage(cursor, cursor.Width - hotX, cursor.Height - hotY, cursor.Width,
                cursor.Height);
                this.Cursor = new Cursor(myNewCursor.GetHicon());
                g.Dispose();
                myNewCursor.Dispose();
            }
    
            private void pictureBox4_Paint(object sender, PaintEventArgs e)//绘制地图函数
            {
                if(gamestart == 1)
                {
                    ReGetMap(e.Graphics);
                    if(timer2 .Enabled ==true)
                    {
                        s1.Drawing(e.Graphics);
                        s2.Drawing(e.Graphics);
                    }
                }
            }
    
            private void Game_Load(object sender, EventArgs e)
            {
                Music("Music\\bj.wav");
                time = 0;
                score = 0;
                money = 0;
                gnum = 0;
                moneylable.Text = money.ToString();
                scorelable.Text = score.ToString();
                timelable.Text = time.ToString();
                snumlable.Text = gnum.ToString();
            }
    
            private void pictureBox5_Click(object sender, EventArgs e)//背包
            {
    
            }
    
            private void pictureBox6_Click(object sender, EventArgs e)//商城
            {
                Money m = new Money();
                //m.Show();
                if(m.ShowDialog()==DialogResult.OK)
                {
                    this.money += m.Num;
                    
                    moneylable.Text = money.ToString();
    
                }
               
            }
        }
    }
    
    

    3.充值,背包,教学界面

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    namespace KillGame
    {
        public partial class Money : Form
        {
            public Money()
            {
                InitializeComponent();
            }
            private int num;
            public int Num
            {
                get { return num; }
                set { num = value; }
            }
    
    
            //private void label1_Click(object sender, EventArgs e)
            //{
            //    DialogResult reult=MessageBox.Show("是否要花费20元购买200枚金币?", "充值提醒", MessageBoxButtons.OKCancel);
            //    if(reult ==DialogResult.OK)
            //    {
            //        num = 200;
            //        MessageBox.Show("充值成功!");
            //    }
            //    else
            //    {
            //        this.Close();
            //    }
            //}
    
            private void button1_Click(object sender, EventArgs e)
            {
                this.Close();
            }
    
            private void button2_Click(object sender, EventArgs e)
            {
                DialogResult reult = MessageBox.Show("是否要花费20元购买200枚金币?", "充值提醒", MessageBoxButtons.OKCancel);
                if (reult == DialogResult.OK)
                {
                    num = 200;
                    MessageBox.Show("充值成功!");
                }
                else
                {
                    this.Close();
                }
            }
        }
    }
    
    

    时间紧凑,略显粗糙,欢迎指出错误!

    展开全文
  • C语言的布尔类型(_Bool)

    万次阅读 多人点赞 2011-04-04 03:04:00
    Technorati 标签: C,布尔,boolean,_Bool,stdbool.h 也许很多人都和我一样,从C99标准开始,不知道C语言已经有了布尔型,类型名字为“_Bool”。 在此之前的C语言中,使用整型int来表示真假。在输入时:使用非零值表示...
    Technorati 标签: C,布尔,boolean,_Bool,stdbool.h

            也许很多人都和我一样,不知道现在的C语言已经有了布尔型:从C99标准开始,类型名字为“_Bool”。

            在此之前的C语言中,使用整型int来表示真假。在输入时:使用非零值表示真;零值表示假。在输出时:真的结果是1,假的结果是0;(这里我所说的“输入”,意思是:当在一个需要布尔值的地方,也就是其它类型转化为布尔类型时,比如 if 条件判断中的的条件;“输出”的意思是:程序的逻辑表达式返回的结果,也就是布尔类型转化为其他类型时,比如 a==b的返回结果,只有0和1两种可能)。

            所以,现在只要你的编译器支持C99(我使用的是Dev C++4.9.9.2),你就可以直接使用布尔型了。另外,C99为了让CC++兼容,增加了一个头文件stdbool.h。里面定义了booltruefalse,让我们可以像C++一样的定义布尔类型。

    1. 我们自己定义的“仿布尔型”

            在C99标准被支持之前,我们常常自己模仿定义布尔型,方式有很多种,常见的有下面两种:

    /* 第一种方法 */
    #define TRUE 1
    #define FALSE 0
    
    
    /* 第二种方法 */ 
    enum bool{false, true}; 

    2. 使用_Bool

            现在,我们可以简单的使用 _Bool 来定义布尔型变量。_Bool类型长度为1,只能取值范围为0或1。将任意非零值赋值给_Bool类型,都会先转换为1,表示。将零值赋值给_Bool类型,结果为0,表示。 下面是一个例子程序。

    #include <stdio.h> 
    #include <stdlib.h>  
    
    int main(){
        _Bool a = 1;
        _Bool b = 2;    /* 使用非零值,b的值为1 */ 
        _Bool c = 0;
        _Bool d = -1;   /* 使用非零值,d的值为1 */ 
        
        printf("a==%d,  /n", a);
        printf("b==%d,  /n", b);
        printf("c==%d,  /n", c);
        printf("d==%d,  /n", d);
    
        printf("sizeof(_Bool) == %d  /n", sizeof(_Bool));
        
        system("pause");
        return EXIT_SUCCESS;
    }

    运行结果如下:(只有0和1两种取值)

    a==1,
    b==1,
    c==0,
    d==1,
    sizeof(_Bool) == 1

    3. 使用stdbool.h

            在C++中,通过bool来定义布尔变量,通过truefalse对布尔变量进行赋值。C99为了让我们能够写出与C++兼容的代码,添加了一个头文件<stdbool.h>。在gcc中,这个头文件的源码如下:(注,为了清楚,不重要的注释部分已经省略)

    /* Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc.
            This file is part of GCC.
     */
    
    #ifndef _STDBOOL_H
    #define _STDBOOL_H
    
    #ifndef __cplusplus
    
    #define bool	_Bool
    #define true	1
    #define false	0
    
    #else /* __cplusplus ,应用于C++里,这里不用处理它*/
    
    /* Supporting <stdbool.h> in C++ is a GCC extension.  */
    #define _Bool	bool
    #define bool	bool
    #define false	false
    #define true	true
    
    #endif /* __cplusplus */
    
    /* Signal that all the definitions are present.  */
    #define __bool_true_false_are_defined	1
    
    #endif	/* stdbool.h */

             可见,stdbool.h中定义了4个宏,bool、true、false、__bool_true_false_are_defined。 其中bool就是 _Bool类型,true和false的值为1和0,__bool_true_false_are_defined的值为1。
    下面是一个例子程序

    #include <stdio.h> 
    #include <stdlib.h> 
    #include <stdbool.h>
    
    /* 测试C99新添加的头文件 stdbool.h */
    
    int main(){
        bool m = true;
        bool n = false;
        printf("m==%d,  n==%d  /n", m, n);
        
        printf("sizeof(_Bool) == %d  /n", sizeof(_Bool));
    
        system("pause");
        return EXIT_SUCCESS;
    }

    执行结果为:

    m==1,  n==0
    sizeof(_Bool) == 1

       

    本文链接:http://blog.csdn.net/daheiantian/archive/2011/02/05/6241893.aspx 

        

    展开全文
  • C++ Primer Plus 第六版 所有章节课后编程练习答案

    万次阅读 多人点赞 2017-11-01 20:32:16
    C++ Primer Plus 第六版 所有章节课后编程练习答案

    我的独立博客地址:www.blog4jimmy.com,欢迎大家关注

    下面的是C++ Primer Plus 第六版所有章节的课后编程练习的答案,都是博主自己写的,有不对的地方请大家留言指出讨论讨论

    C++ Primer Plus 第六版 第二章课后编程练习答案: http://blog4jimmy.com/2017/10/67.html

    C++ Primer Plus 第六版 第三章课后编程练习答案: http://blog4jimmy.com/2017/10/71.html

    C++ Primer Plus 第六版 第四章课后编程练习答案: http://blog4jimmy.com/2017/10/74.html

    C++ Primer Plus 第六版 第五章课后编程练习答案: http://blog4jimmy.com/2017/10/80.html

    C++ Primer Plus 第六版 第六章课后编程练习答案: http://blog4jimmy.com/2017/10/83.html

    C++ Primer Plus 第六版 第七章课后编程练习答案: http://blog4jimmy.com/2017/10/147.html

    C++ Primer Plus 第六版 第八章课后编程练习答案: http://blog4jimmy.com/2017/10/149.html

    C++ Primer Plus 第六版 第九章课后编程练习答案: http://blog4jimmy.com/2017/10/151.html

    C++ Primer Plus 第六版 第十章课后编程练习答案: http://blog4jimmy.com/2017/10/153.html

    C++ Primer Plus 第六版 第十一章课后编程练习答案: http://blog4jimmy.com/2017/10/155.html

    C++ Primer Plus 第六版 第十二章课后编程练习答案: http://blog4jimmy.com/2017/10/157.html

    C++ Primer Plus 第六版 第十三章课后编程练习答案: http://blog4jimmy.com/2017/10/159.html

    C++ Primer Plus 第六版 第十四章课后编程练习答案: http://blog4jimmy.com/2017/10/161.html

    C++ Primer Plus 第六版 第十六章课后编程练习答案: http://blog4jimmy.com/2017/10/163.html

    展开全文
  • 目录 一.变量的内存实质到 1.1变量的实质 1.2 赋值给变量 1.3变量在哪里? 二. 指针是个什么东西? 三. 二级指针(指针的指针) 3.1 定义与初始化 3.2间接数据访问 3.2.1.改变一级指针指向 ...四....4....
  • C++复习大全(各种知识点)

    万次阅读 多人点赞 2018-05-28 20:42:29
    前言 这篇博客是我之前的一个礼拜复习总结的各种知识点,可能有些多,其中的一些观点是来自于《Effective C++》和《C++编程思想》,这两本书中的知识给了我很多启发,也让我懂得了许多不一样的知识点,我连带我的...
  • 一、IHookHelper 主要在用在自定义类型于AE带的的ICommand或ITool等, 1.实例化IHookHelper 对象: IHookHelper m_hookHelper = new HookHelperClass();  m_hookHelper.Hook = this.axMapControl1.Object ;...
  • http://c.biancheng.net/c/
  • C/C++程序员实战基础

    万人学习 2019-09-10 10:07:56
  • c语言教程第4天

    万人学习 2018-12-27 18:25:32
    C语言教程第4天涵盖了C语言的入门语法知识,包括逻辑运算符,if语言的运用
  • 2016年c语言教程第3天

    万人学习 2019-06-27 10:47:20
    2016年c语言教程第3天
  • C++基础入门21 精讲

    万人学习 2019-01-07 13:19:24
    若其他学科编程语言的学习步骤是:学习,应用、上项目,那么C/C++语言的学习步骤为:学习、理解、应用、上项目,多了一步理解。就是“理解”之步骤彰显了C/C++学习难度大于其他编程语言。 本课程十分适用与学员自学
  • 学好C语言需要的五本书

    千次阅读 多人点赞 2016-08-28 20:22:57
    Kernighan和Ritchie的《The C Programming Language》(中译名《C程序设计语言》)堪称经典中的经典,不过旧版的很多内容都已过时,和现在的标准C语言相去甚远,大家一定要看最新的版本,否则不如不看。 第二本 ...
  • C/C++编程突破世界的枷锁

    万人学习 2018-12-27 14:01:26
    本课程带领大家从零开始学习C,C++的编程语言,这是一门小白也能学懂敲会的神奇编程课程。
  • C语言跨平台编程入门视频精讲

    万人学习 2019-06-24 13:06:42
    新易懂的C语言入门教程,技术点环环相扣,循序渐进,通俗易懂,思路清析,绝不按教科书来,绝对是为初中生准备的入门教程。虽然入门,但对指针,内存管理等难点做了深入讲解,绝对是打基础的上乘教材,后续还有以此...
  • 本课程的目标是引导大家从本质上了解内存和C语言程序的关联,课程性质是原理性、理解性的。虽实战较少但可以用来指导实战,层次上高于实战。
  • 本套视频教程介绍加密解密相关的常见算法,指出每种算法的应用场景,并给出使用示例。具体包含: (1) 数据转换(HEX和base64) (2) 对称加密 (DES, 3DES, AES) (3) 校验 CRC, MD5摘要, SHA1摘要 (4) 数字签名...
1 2 3 4 5 ... 20
收藏数 10,086,788
精华内容 4,034,715
关键字:

c