查看: 5038|回复: 26

[随意闲聊] 『从零开始』每天写个小游戏

[复制链接]
梦石
0
星屑
50
在线时间
43 小时
注册时间
2013-11-30
回帖
18
发表于 2013-11-30 09:17:27 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
本帖最后由 maweiblue 于 2013-11-30 14:00 编辑

平时很喜欢研究游戏技术,也用工具做过几个小游戏,但总是感觉很有局限性,所以下定决心,开始学习编程,虽然没有什么基础,但相信天道酬勤,只要坚持下来,总会有所收获,希望通过一段时间的努力,能做出自己心仪的游戏,在此发帖也是希望给自己个动力,能坚持下去。

语言我选择JAVA,跨平台,入门比较简单,做PC,安卓小游戏都十分适合。

由于没有编程基础,代码写的较挫,请前辈们原谅,能给出意见建议一定虚心接受。

game no.1(11.30)

[pre lang="Java" line="1"]import java.util.Scanner;
public class MyTest {
        /**
         * 猜100以内数字的小游戏,最后给出猜的次数,
         * @param args
         */
        public static void main(String[] args){
                //生成一个100的随机数字
                int myrandom=(int)(100*Math.random());
                //生成一个Scanner对象
                Scanner myscanner=new Scanner(System.in);
                System.out.print("开始输入你的数字");
                //开始接受输入一个数字
                int myint=myscanner.nextInt();
                //这个用来记录猜的次数
                byte testnum=0;
                //开始一个循环,如果猜的数字和生成的随机数不同,就提示大小;
                while(myint!=myrandom){
                if(myint>myrandom){
                        System.out.println("你猜的数字大了,再来一次吧");
                        }else{
                        System.out.println("你猜的数字小了,再来一次吧");
                        }
                         myint=myscanner.nextInt();
                        testnum++;
                }
                //成功就跳出,并且给出
                System.out.print("完美成功了哈哈,你一共试了"+testnum+"次");
        }
}
[/pre]
运行状态
未命名.jpg



game no 2:(11.30)

刚刚学了类和对象,趁着还没忘,先写个非常传统的RPG游戏,复刻勇者斗恶龙
新建一个Creative类
[pre lang="Java" line="1"]package com.linuxgame.test;
/**
* 创造物父类,定义一些基本的属性方法
* @author Administrator
*
*/
public class Creative {
        //创造物的名字
        protected String name;
        //定义HP
        protected int hp;
        //定义攻击力strenth
        protected int str;
        //定义幸运值luck
        protected int luk;
        //构造函数
        public Creative(String name,int hp,int str,int luk){
                this.name=name;
                this.hp=hp;
                this.str=str;
                this.luk=luk;
                System.out.println(this.name+"出现在地图上");
               
        }
        //作为一只合格的怪物,最要紧的是要会攻击!不会攻击的怪物不是好怪物!
        //作为一只风骚的英雄,最要紧的是要会攻击!不会开车的裁缝不是好厨子!
        public void attack(Creative obj){
                        //产生一个攻击伤害,由力量和幸运共同产生;
                        int attacknum=this.str+(int)(this.luk*Math.random());
                        obj.attacked(attacknum);
                }
        //这个函数表示被抽时候扣掉HP
        public void attacked(int attacknum){
                this.hp-=attacknum;
               
        }
        //这个是传说中的血条
        public int getHp(){
                return this.hp;
        }
        //总的说些什么吧
        public void say(String hehe){
                System.out.print(hehe);
               
        }

}
[/pre]

然后再定义一个英雄类啦
[pre lang="Java" line="1"]package com.linuxgame.test;
/**
* 这个类当然是定义了一个英雄类了哈哈哈哈哈
* @author Administrator
*
*/
public class Hero extends Creative{
        //作为一个英雄,当然需要一个有主角光环
        public Hero(String name,int hp,int str,int luk){
                super(name,hp,str,luk);
                System.out.println("**我是主角光环(made in china)***");
        }

}
[/pre]

当然怪物类也是非常必要的。

[pre lang="Java" line="1"]package com.linuxgame.test;
/**这个类定义小怪物
*
* @author Administrator
*
*/
public class Monster extends Creative{
        //小怪物出场总要有个背景音乐的吧,来个冷艳风格的
        public Monster(String name,int hp,int str,int luk){
                        super(name,hp,str,luk);
                        System.out.println("*******我是冷艳的背景音乐*******");
                       
        }

}
[/pre]


最后,生成世界地图,开始大决战了。

[pre lang="java" line="1"]package com.linuxgame.test;
/**
* 这里是世界地图,英雄和美女,恶龙和兔子,基佬和腐女的传说在这里流传
* @author Administrator
*
*/
public class Test {

        public static void main(String[] args) {
                //背景故事
                System.out.println("很久很久以前,天朝是一个普大喜奔的美丽地方");
                //生成怪物
                Monster mon1=new Monster("灰太狼",1000,10,5);
                //出场台词
                mon1.say("愚蠢的人类啊!喵");
                //英雄出场
                Hero hero1=new Hero("毛小明",98,8,10);
                //英雄要霸气的台词
                hero1.say("做了英雄,妈妈再也不用担心我的学习");
                System.out.println("剧情省略,玩家自己脑补,终于到了决定命运的时刻了");
                System.out.println("******************************");
                //战斗太激烈了,完全是不死不休啊
                while((mon1.getHp()>0)&&(hero1.getHp()>0)){
                        //怪物打英雄
                        mon1.attack(hero1);
                        System.out.println("怪物君打了英雄君");
                        //英雄打怪物
                        if(hero1.getHp()>0){
                                hero1.attack(mon1);
                                System.out.println("英雄君打了怪物君");
                        }else{
                                hero1.say("我的生涯一片无悔,我想起那天夕阳下的奔跑,那是我逝去的青春");
                                break;
                        }
                        if(mon1.getHp()<=0){
                                mon1.say("我的生涯一片无悔,我想起那天夕阳下的奔跑,那是我逝去的青春");
                        }
                       
                }
               

        }

}[/pre]

运行情况。
未命名.jpg

评分

参与人数 1星屑 +12 收起 理由
火烧兔子 + 12 塞糖(加油

查看全部评分

梦石
0
星屑
407
在线时间
1291 小时
注册时间
2013-1-12
回帖
3349

贵宾

发表于 2013-11-30 09:52:17 | 显示全部楼层
本帖最后由 76213585 于 2013-11-29 19:22 编辑

我用Ruby寫寫看好了....  應該不會很難owo

完成!
[pre lang="ruby" line="1"]def guess_number(max)
  a=rand(max);times=0
  p "Guess the Number"
  loop do
    guess = gets.chomp
    if guess.to_i == a
      p "You won! The number was #{guess}! You have tryed #{times} times!"
      break
    elsif guess.to_i < a
      p "The number is higher than your guess"
      times += 1
    elsif guess.to_i > a
      p "The number is lower than your guess"
      times += 1
    end
  end
end
guess_number(200)[/pre]

回复

使用道具 举报

梦石
0
星屑
660
在线时间
1286 小时
注册时间
2011-6-14
回帖
3949
发表于 2013-11-30 11:39:30 | 显示全部楼层
每次都看到Java =A=
表示我绝对不会学Java(所以不会玩Minecraft Forge= =
一天一个小游戏是太频繁了吧,1周一个差不多……

点评

LBQ
所以静态语言必须死(拿出兵器  发表于 2013-11-30 13:22
怎么不来一个VB版的…  发表于 2013-11-30 12:39
回复

使用道具 举报

梦石
0
星屑
2826
在线时间
2634 小时
注册时间
2013-1-16
回帖
5453

贵宾

发表于 2013-11-30 11:41:48 | 显示全部楼层
以下是VB版
  1. Sub Main()
  2.   Randomize
  3.   number = Int(Rnd() * 100)
  4.   ans = - 1
  5.   i = 0
  6.   do
  7.     i = 1
  8.     ans = InputBox("Answer")
  9.     If ans > number Then
  10.       MsgBox "What you answer is larger."
  11.     End If
  12.     If ans < number Then
  13.       MsgBox "What you answer is smaller."
  14.     End If
  15.   loop until ans = number
  16.   MsgBox "Congratulations! You have tried" & i & "times"
  17. End Sub
复制代码

点评

今年九月接触编程的……不要要求太高……只会VB/C/Java/Ruby,下一步要学html……  发表于 2013-11-30 12:49
(Created by @喵kano)


施工现场:hotege.github.io
回复

使用道具 举报

梦石
0
星屑
6891
在线时间
7027 小时
注册时间
2013-11-2
回帖
1263

开拓者剧作品鉴家

发表于 2013-11-30 11:55:07 | 显示全部楼层
VC++
  1. #include <stdio.h>  
  2. #include <stdlib.h>
  3. #include <time.h>

  4. int n,a,times;
  5. int main()
  6. {
  7. srand(time(NULL));
  8. n = rand()%99+1;
  9. printf("It's number guessing time! Please enter a number from 1 to 99: ");
  10.         scanf("%d",&a);
  11.                 printf("\n");
  12.                 times++;
  13. while (a !=n){
  14.         if (a < n){printf("The number is smaller than your guess.");}
  15.         else if (a > n){printf("The number is bigger than your guess.");}
  16.     printf(" Please try again: ");   
  17.         scanf("%d",&a);
  18.                 printf("\n");
  19.                 times++;
  20. }
  21. printf("Congratulations! The number was %d! You've tried %d times.",n,times);
  22.                 printf("\n\n");
  23.         system("pause");
  24.         return 0;
  25. }
复制代码
回复

使用道具 举报

梦石
0
星屑
50
在线时间
43 小时
注册时间
2013-11-30
回帖
18
 楼主| 发表于 2013-11-30 12:33:19 | 显示全部楼层
satgo1546 发表于 2013-11-30 11:39
每次都看到Java =A=
表示我绝对不会学Java(所以不会玩Minecraft Forge= =
一天一个小游戏是太频繁了吧,1 ...

不可能是一个完整的游戏,只是做个练习,完成一个功能
回复

使用道具 举报

百合控

梦石
0
星屑
6548
在线时间
1275 小时
注册时间
2013-8-21
回帖
3522

开拓者

发表于 2013-11-30 12:42:16 | 显示全部楼层
本帖最后由 余烬之中 于 2013-11-30 12:43 编辑

我想用ruby写 发现有人写了 想用C++写 发现有人写了 想用VB写 发现有人写了
就把楼主的代码重写一遍吧 增加了输入-1时退出的功能
  1. import java.util.Scanner;
  2. public class GuessNum {
  3.    public static void main(String[] args) {
  4.       Scanner myscanner = new Scanner(System.in);
  5.       System.out.println("Guess what the number is:");
  6.       int num = (int) (100 * Math.random()), i = 0, g;
  7.       while ((g = myscanner.nextInt()) != num && g != -1) {
  8.          i++;
  9.          if (g > num) System.out.println("Too Big! Guess again:");
  10.          else System.out.println("Too Small! Guess again:");
  11.       }
  12.       if (g == -1) System.out.println(" - Failed - \nYou tried " + i + " times.");
  13.       else System.out.println(" - Succeed - \nYou tried " + i + " times.");
  14.    }
  15. }
复制代码

点评

还可以用C#, objective_C, PHP, .NET, Fortran (泥垢  发表于 2013-12-2 13:31
……还有pascal啊  发表于 2013-11-30 12:46
萌新瑟瑟发抖
看到我请叫我去干活
回复

使用道具 举报

梦石
0
星屑
108
在线时间
518 小时
注册时间
2013-4-20
回帖
899
发表于 2013-11-30 12:46:00 | 显示全部楼层
膜拜- -好厉害啊……哦 话说能插入到VX什么的么= =

点评

想多了  发表于 2013-11-30 13:34
前尘往事
回复

使用道具 举报

梦石
0
星屑
50
在线时间
43 小时
注册时间
2013-11-30
回帖
18
 楼主| 发表于 2013-11-30 14:14:44 | 显示全部楼层
对game2 的一些小小修改。

很久很久以前,天朝是一个普大喜奔的美丽地方
灰太狼出现在地图上
*******我是冷艳的背景音乐*******
灰太狼说:愚蠢的人类啊!喵
毛小明出现在地图上
**我是主角光环(made in china)***
毛小明说:做了英雄,妈妈再也不用担心我的学习
剧情省略,玩家自己脑补,终于到了决定命运的时刻了
******************************
怪物君打了英雄君,造成12伤害
英雄君打了怪物君造成14伤害
怪物君打了英雄君,造成11伤害
英雄君打了怪物君造成15伤害
怪物君打了英雄君,造成13伤害
英雄君打了怪物君造成8伤害
怪物君打了英雄君,造成14伤害
英雄君打了怪物君造成10伤害
怪物君打了英雄君,造成10伤害
英雄君打了怪物君造成14伤害
怪物君打了英雄君,造成10伤害
英雄君打了怪物君造成8伤害
怪物君打了英雄君,造成13伤害
英雄君打了怪物君造成8伤害
怪物君打了英雄君,造成10伤害
英雄君打了怪物君造成16伤害
怪物挂了
灰太狼说:我的生涯一片无悔,我想起那天夕阳下的奔跑,那是我逝去的青春
回复

使用道具 举报

梦石
0
星屑
660
在线时间
1286 小时
注册时间
2011-6-14
回帖
3949
发表于 2013-11-30 17:55:45 来自手机 | 显示全部楼层
maweiblue 发表于 2013-11-30 12:33
不可能是一个完整的游戏,只是做个练习,完成一个功能

像这样的游戏当然容易编写啦。如果你执着于控制台的程序,建议参考一下CraftOS的adventure。(Minecraft Computer Mod OS里的文字冒险游戏
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部